@spotify/backstage-plugin-soundcheck 0.13.0 → 0.14.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 +65 -0
- package/alpha/package.json +1 -1
- package/dist/alpha/apis.esm.js +1 -1
- package/dist/alpha/entity-content.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha/plugin.esm.js +1 -1
- package/dist/alpha/sidebar-item.esm.js +1 -1
- package/dist/alpha.d.ts +121 -1
- package/dist/api.esm.js +1 -1
- package/dist/components/Badges/BaseBadge.esm.js +1 -1
- package/dist/components/Badges/CampaignBadge.esm.js +1 -1
- package/dist/components/Badges/CertificationBadge.esm.js +1 -1
- package/dist/components/Badges/NoLevelBadge.esm.js +5 -1
- package/dist/components/Badges/PlaylistBadge.esm.js +1 -1
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +2 -0
- package/dist/components/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
- package/dist/components/CampaignDetailsPage/CampaignDetailRow.esm.js +1 -1
- package/dist/components/CampaignDetailsPage/CampaignDetails.esm.js +1 -1
- package/dist/components/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
- package/dist/components/CampaignDetailsPage/CampaignMilestones.esm.js +1 -1
- package/dist/components/CampaignDetailsPage/CampaignProgress.esm.js +1 -1
- package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignScheduleField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
- package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +1 -1
- package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignEmptyState.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CheckCard/CheckCard.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +2 -0
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckDryRun/CheckDryRun.esm.js +2 -0
- package/dist/components/CheckDryRun/CheckDryRunContext.esm.js +2 -0
- package/dist/components/CheckDryRun/CheckDryRunDetails.esm.js +2 -0
- package/dist/components/CheckDryRun/CheckDryRunDialog.esm.js +2 -0
- package/dist/components/CheckDryRun/CheckDryRunDialogButton.esm.js +2 -0
- package/dist/components/CheckDryRun/checkDryRunUtils.esm.js +2 -0
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +2 -0
- package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/FactValueDisplay.esm.js +2 -0
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListContext.esm.js +2 -0
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js +2 -0
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +2 -0
- package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
- package/dist/components/CheckForm/types/ExpressionType.esm.js +1 -1
- package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
- package/dist/components/CheckForm/utils/checkFormUtils.esm.js +1 -1
- package/dist/components/CheckForm/utils/validation.esm.js +1 -1
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckDetailsView.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusBar.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
- package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +2 -0
- package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +2 -0
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorOption.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/DataDog/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Kubernetes/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/PagerDuty/StatusesComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/PagerDuty/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/ExistsFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/FactCollectionConfig.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/FactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +2 -0
- 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/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/ExpandableSection/ExpandableSection.esm.js +2 -0
- package/dist/components/FactExplorer/FactExplorer.esm.js +2 -0
- package/dist/components/FactExplorer/FactExplorerContext.esm.js +2 -0
- package/dist/components/FactExplorer/FactExplorerDialog.esm.js +2 -0
- package/dist/components/FactExplorer/useFactOptions.esm.js +2 -0
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/EntityTableToolbar.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/FooterButtons/FooterButtons.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +2 -0
- package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +2 -0
- package/dist/components/FormControlledAutocomplete/useLabelOptions.esm.js +2 -0
- package/dist/components/FormFieldLabel/FormFieldLabel.esm.js +2 -0
- package/dist/components/FormStepper/FormStepper.esm.js +1 -1
- package/dist/components/FormattedPreview/FormattedPreview.esm.js +4 -0
- package/dist/components/Frequency/FrequencyComponent.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/ListboxVirtualized/ListboxVirtualized.esm.js +2 -0
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignBanner/CampaignArea.esm.js +2 -0
- package/dist/components/OverviewPage/CampaignBanner/CampaignBanner.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageHeader.esm.js +2 -0
- package/dist/components/OverviewPage/index.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +2 -0
- package/dist/components/OverviewTable/Cell/EntityRefCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/HighestLevelBadge.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/TrackLevelHeaderCell.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTableHeader.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
- package/dist/components/PassRateTable/PassRateTable.esm.js +3 -1
- package/dist/components/QuickstartPage/HowDoIListItem.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +2 -0
- package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +7 -0
- package/dist/components/QuickstartPage/WelcomeModal.esm.js +2 -0
- package/dist/components/QuickstartPage/styles.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +2 -0
- package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +2 -0
- package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +2 -0
- package/dist/components/SoundcheckHeader/SoundcheckHeaderContext.esm.js +2 -0
- package/dist/components/SoundcheckHeader/headerUtil.esm.js +2 -0
- package/dist/components/SoundcheckHeader/useHeader.esm.js +2 -0
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthTabs/ActionColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +2 -0
- package/dist/components/{EditTrackPage/EditTrackPage.esm.js → TrackEditPage/TrackEditPage.esm.js} +2 -2
- package/dist/components/TrackEditPage/TrackEditView.esm.js +2 -0
- package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.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/TrackForm.esm.js +1 -1
- package/dist/components/TrackForm/utils/trackFormUtils.esm.js +1 -1
- package/dist/components/TrackForm/utils/validation.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/utils.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/components/TracksTab/TracksTab.esm.js +1 -1
- package/dist/contexts/GenericFormContext.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +104 -36
- package/dist/hooks/catalog/useGetEntityRefs.esm.js +2 -0
- package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
- package/dist/hooks/checks/useCheckTemplates.esm.js +2 -0
- package/dist/hooks/checks/useExecuteCheck.esm.js +1 -1
- package/dist/hooks/checks/useGetChecks.esm.js +1 -1
- package/dist/hooks/collectors/useGetFactSchema.esm.js +1 -1
- package/dist/hooks/collectors/useUpdateCollectorConfig.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/useGetFact.esm.js +2 -0
- package/dist/hooks/useGetPathResolvers.esm.js +2 -0
- package/dist/images/gitlab-rgb.svg +1 -0
- package/dist/images/gitlab-white.svg +1 -0
- package/dist/images/jira-rgb.svg +25 -0
- package/dist/images/jira-white.svg +25 -0
- package/dist/images/sonarqube-rgb.svg +14 -0
- package/dist/images/sonarqube-white.svg +14 -0
- package/dist/index.d.ts +5 -5
- package/dist/plugin.esm.js +1 -1
- package/dist/routes.esm.js +1 -1
- package/dist/utils/export.esm.js +3 -3
- package/dist/utils/filters.esm.js +1 -1
- package/dist/utils/formStyles.esm.js +1 -1
- package/dist/utils/validation.esm.js +1 -1
- package/package.json +20 -18
- package/dist/components/CampaignForm/CampaignFormDescription.esm.js +0 -2
- package/dist/components/CampaignsPage/AddCampaignView.esm.js +0 -2
- package/dist/components/CheckForm/CheckFormDescription.esm.js +0 -2
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +0 -2
- package/dist/components/ChecksPage/AddCheckView.esm.js +0 -2
- package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +0 -2
- package/dist/components/EditTrackPage/EditTrackView.esm.js +0 -2
- package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +0 -2
- package/dist/components/FullScreenDialog/FullScreenDialog.esm.js +0 -2
- package/dist/components/OverviewPage/OverviewTabs.esm.js +0 -2
- package/dist/components/OverviewPage/OverviewTabsSkeleton.esm.js +0 -2
- package/dist/components/RoutingPage/Breadcrumbs.esm.js +0 -2
- package/dist/components/RoutingPage/utils.esm.js +0 -2
- package/dist/components/TracksPage/AddTrackView.esm.js +0 -2
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import{Paper as
|
|
1
|
+
import{Paper as T,Table as v,TableHead as R,TableRow as p,TableCell as h,TableBody as x,TablePagination as S}from"@material-ui/core";import{makeStyles as H}from"@material-ui/core/styles";import a,{useState as u,useEffect as B}from"react";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{useGetChecks as L}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{Loading as N}from"../TechHealth/Loading/Loading.esm.js";const $=H(r=>({paper:{width:"100%",boxShadow:"none",border:`1px solid ${r.palette.divider}`,borderRadius:r.shape.borderRadius},tableHeaderCell:{fontWeight:"bold"}})),z=({data:r,columns:i,showsCheckData:n})=>{const d=$(),[s,o]=u(0),[l,b]=u(10),{data:g,isLoading:f}=L({ids:n?r.map(e=>e.id):[]});if(B(()=>{o(0)},[r.length]),f)return a.createElement(N,null);const C=(e,t)=>{o(t)},E=e=>{b(+e.target.value),o(0)},m=s*l,P=m+l,k=e=>`Cannot view detail: Check exists in results data only. That is, a check
|
|
2
|
+
with the id '${e}' is not defined in any yaml files nor was such a
|
|
3
|
+
check created through Soundcheck's UI.`,w=(e,t)=>{if(!e.renderCell)return t[e.id];if(e.id==="action"&&n){const c=g?.edges.find(y=>y.node.id===t.id)!==void 0;return e.renderCell(t,!c,c?void 0:k(t.id))}return e.renderCell(t)};return a.createElement(T,{className:d.paper},a.createElement(v,{size:"small"},a.createElement(R,null,a.createElement(p,null,i.map(e=>a.createElement(h,{key:`header-${e.id}`,className:d.tableHeaderCell},e.label)))),a.createElement(x,null,r.slice(m,P).map(e=>a.createElement(p,{key:e.id},i.map(t=>a.createElement(h,{key:`cell-${t.id}`},w(t,e))))))),a.createElement(S,{rowsPerPageOptions:[10,25,50],component:"div",count:r.length,rowsPerPage:l,page:s,onPageChange:C,onRowsPerPageChange:E}))};export{z as PassRateTable};
|
|
2
4
|
//# sourceMappingURL=PassRateTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Grid as t,Typography as n,Button as c}from"@material-ui/core";import e from"react";import{useQuickstartStyles as l}from"./styles.esm.js";const s=({title:r,description:o,onClick:a,className:i})=>{const m=l();return e.createElement(t,{container:!0,direction:"row",alignItems:"center",className:i},e.createElement(t,{item:!0,xs:3},e.createElement(n,{variant:"h6"},r)),e.createElement(t,{item:!0,xs:!0,style:{flexGrow:1}},e.createElement(n,{variant:"body1"},o)),e.createElement(t,{item:!0,xs:1,container:!0,justifyContent:"flex-end"},e.createElement(c,{onClick:a,className:m.dontYellAtMeButton},"Go")))};export{s as HowDoIListItem};
|
|
2
|
+
//# sourceMappingURL=HowDoIListItem.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useRouteRef as o}from"@backstage/core-plugin-api";import{Typography as t,Link as c}from"@material-ui/core";import e from"react";import{checksPageRouteRef as n}from"../../routes.esm.js";import{QuickstartCardBase as s}from"./QuickstartCardBase.esm.js";import{useQuickstartStyles as i}from"./styles.esm.js";const m=()=>{const r=i(),a=o(n);return e.createElement(s,{header:"Checks",routeRef:a},e.createElement(t,{variant:"body1",component:"div",className:r.mainPoint},"Checks are comparisons between defined acceptable fact values and the actual fact values of given collected facts."),e.createElement(t,{variant:"body1",component:"div",paragraph:!0},"We've pre-populated your instance with two sets of checks which are used in the provided tracks."),e.createElement(t,null,"Need Help? Check out the"," ",e.createElement(c,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks",className:r.link,target:"_blank",rel:"noopener noreferrer"},"documentation"),"."))};export{m as QuickstartChecksCard};
|
|
2
|
+
//# sourceMappingURL=QuickStartChecksCard.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Typography as s,Divider as a,Box as i,Button as n}from"@material-ui/core";import e from"react";import{useNavigate as c}from"react-router-dom";import{Card as d}from"../SummaryCard/SummaryCard.esm.js";import{useQuickstartStyles as p}from"./styles.esm.js";const u=({header:r,routeRef:o,children:m})=>{const t=p(),l=c();return e.createElement(d,null,e.createElement(s,{variant:"h5",className:t.headers},r),e.createElement(a,{className:t.divider}),m,e.createElement(i,{className:t.buttonBox},e.createElement(a,{className:t.divider,style:{marginBottom:"3px"}}),e.createElement(n,{className:t.dontYellAtMeButton,onClick:()=>l(o())},"Explore ",r)))};export{u as QuickstartCardBase};
|
|
2
|
+
//# sourceMappingURL=QuickstartCardBase.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useRouteRef as c}from"@backstage/core-plugin-api";import{Typography as t,Link as n,Grid as o}from"@material-ui/core";import e from"react";import{integrationsPageRouteRef as m,integrationDetailsRouteRef as f}from"../../routes.esm.js";import{QuickstartCardBase as d}from"./QuickstartCardBase.esm.js";import{useQuickstartStyles as u}from"./styles.esm.js";const h=()=>{const r=u(),i=c(m),a=c(f),s=a({integrationId:"scm"}),l=a({integrationId:"github"});return e.createElement(d,{header:"Integrations",routeRef:i},e.createElement(t,{variant:"body1",component:"div",className:r.mainPoint},"One of the foundational elements of Soundcheck,"," ",e.createElement(n,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors",className:r.link,target:"_blank",rel:"noopener noreferrer"},"Integrations")," ","collect raw data about your components. These facts are then used by checks to determine the health of your components."),e.createElement(t,{variant:"body1",component:"div"},"Soundcheck comes with a variety of integrations, two of which we've enabled and configured for your starting instance:"),e.createElement(o,{container:!0,direction:"row",className:r.grid},e.createElement(o,{item:!0,xs:4},e.createElement(t,{variant:"body1"},e.createElement(n,{href:s,className:r.link,target:"_blank",rel:"noopener noreferrer"},"SCM Integration"))),e.createElement(o,{item:!0,xs:8},e.createElement(t,{variant:"body1"},"Checks for recommended settings in your GitHub repositories.")),e.createElement(o,{item:!0,xs:4},e.createElement(t,{variant:"body1"},e.createElement(n,{href:l,className:r.link,target:"_blank",rel:"noopener noreferrer"},"GitHub Integration"))),e.createElement(o,{item:!0,xs:8},e.createElement(t,{variant:"body1"},"Pulls information from Github."))),e.createElement(t,null,"Need Help? Check out the"," ",e.createElement(n,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors",className:r.link,target:"_blank",rel:"noopener noreferrer"},"documentation"),"."))};export{h as QuickstartCollectorConfigurationsCard};
|
|
2
|
+
//# sourceMappingURL=QuickstartCollectorConfigurationsCard.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Content as i}from"@backstage/core-components";import{useRouteRef as m}from"@backstage/core-plugin-api";import{Button as c,Grid as r}from"@material-ui/core";import e from"react";import{useNavigate as n}from"react-router-dom";import{rootRouteRef as s}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as l}from"../SoundcheckHeader/useHeader.esm.js";import{QuickstartChecksCard as u}from"./QuickStartChecksCard.esm.js";import{QuickstartCollectorConfigurationsCard as d}from"./QuickstartCollectorConfigurationsCard.esm.js";import{QuickstartTracksCard as p}from"./QuickstartTracksCard.esm.js";import{useQuickstartStyles as f}from"./styles.esm.js";import{WelcomeHelpSection as k}from"./WelcomeHelpSection.esm.js";import{WelcomeModal as g}from"./WelcomeModal.esm.js";const h=()=>{const t=f(),o=n(),a=m(s);return l({title:"Getting Started with Soundcheck",description:"Soundcheck comes with tracks, checks, and integrations pre-installed to get you up and running right away.",sectionRight:e.createElement(c,{className:t.headerButton,onClick:()=>o(a()),color:"inherit"},"Take me to Soundcheck!")}),e.createElement(i,{className:t.introTitle},e.createElement(g,null),e.createElement(r,{container:!0,direction:"row","aria-label":"getting-started-items",className:t.grid,spacing:2},e.createElement(r,{item:!0,xs:4,className:t.cards},e.createElement(p,null)),e.createElement(r,{item:!0,xs:4,className:t.cards},e.createElement(u,null)),e.createElement(r,{item:!0,xs:4,className:t.cards},e.createElement(d,null))),e.createElement(k,null))};export{h as QuickstartPage};
|
|
2
|
+
//# sourceMappingURL=QuickstartPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useRouteRef as c}from"@backstage/core-plugin-api";import{Typography as t,Grid as a,Link as n}from"@material-ui/core";import e from"react";import{tracksPageRouteRef as l,trackDetailsRouteRef as d}from"../../routes.esm.js";import{QuickstartCardBase as u}from"./QuickstartCardBase.esm.js";import{useQuickstartStyles as k}from"./styles.esm.js";const p=()=>{const r=k(),i=c(l),o=c(d),s=o({trackId:"993a9b69-3445-4d42-a950-2a847d618825"}),m=o({trackId:"140ea084-d918-4d41-9035-95d72516ec4b"});return e.createElement(u,{header:"Tracks",routeRef:i},e.createElement(t,{variant:"body1",component:"div",className:r.mainPoint},"Tracks encourage alignment to architectural best practices and standards and are analogous to an organization\u2019s long-term tech health initiatives."),e.createElement(t,{variant:"body1",component:"div"},"We have provided two tracks to start you off:"),e.createElement(a,{container:!0,direction:"row",className:r.grid},e.createElement(a,{item:!0,xs:5},e.createElement(t,{variant:"body1"},e.createElement(n,{href:s,className:r.link,target:"_blank",rel:"noopener noreferrer"},"Basic SCM Compliance"))),e.createElement(a,{item:!0,xs:6},e.createElement(t,{variant:"body1"},"Ensures your source control management is configured correctly.")),e.createElement(a,{item:!0,xs:5},e.createElement(t,{variant:"body1"},e.createElement(n,{href:m,className:r.link,target:"_blank",rel:"noopener noreferrer"},"Recommended GitHub Settings"))),e.createElement(a,{item:!0,xs:6},e.createElement(t,{variant:"body1"},"Checks for recommended settings in your GitHub repositories."))),e.createElement(t,null,"Need Help? Check out the"," ",e.createElement(n,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks",className:r.link,target:"_blank",rel:"noopener noreferrer"},"documentation"),"."))};export{p as QuickstartTracksCard};
|
|
2
|
+
//# sourceMappingURL=QuickstartTracksCard.esm.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{useRouteRef as a}from"@backstage/core-plugin-api";import{Paper as u,Typography as d,Grid as i}from"@material-ui/core";import e from"react";import{useNavigate as C}from"react-router-dom";import{checkCreateRouteRef as f,checkTemplatesRouteRef as w,trackCreateRouteRef as b,integrationsPageRouteRef as R,rootRouteRef as E,checksPageRouteRef as N,tracksPageRouteRef as y}from"../../routes.esm.js";import{HowDoIListItem as c}from"./HowDoIListItem.esm.js";import{useQuickstartStyles as G}from"./styles.esm.js";const T=()=>{const r=G(),t=C(),n=a(f),s=a(w),l=a(b),h=a(R),m=a(E),p=a(N),k=a(y),o=g=>g%2===0?r.bgColorEven:r.bgColorOdd;return e.createElement(u,{className:r.howDoIList},e.createElement(d,{variant:"h5",className:r.headers},"How Do I...?"),e.createElement(i,{container:!0,direction:"column","aria-label":"getting-started-items",className:r.grid},e.createElement(i,{item:!0},e.createElement(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.createElement(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.createElement(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.createElement(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.createElement(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.createElement(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
|
+
down and look at the 'Entities' table.`,onClick:()=>t(p())}),e.createElement(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(k())}))))};export{T as WelcomeHelpSection};
|
|
7
|
+
//# sourceMappingURL=WelcomeHelpSection.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Dialog as c,Box as s,Typography as o,Link as a,Button as m}from"@material-ui/core";import e,{useState as i,useEffect as d}from"react";import{useQuickstartStyles as u}from"./styles.esm.js";const k=()=>{const t=u(),[l,n]=i(!1),r=()=>{n(!1)};return d(()=>{localStorage.getItem("hasSeenSoundcheckWelcomeModal")||(n(!0),localStorage.setItem("hasSeenSoundcheckWelcomeModal","true"))},[]),e.createElement(c,{open:l,onClose:r,"aria-labelledby":"modal-title","aria-describedby":"modal-description"},e.createElement(s,{className:t.modal},e.createElement(o,{id:"modal-title",variant:"h4",component:"div",className:t.headers},"Welcome to Soundcheck"),e.createElement(o,{variant:"body1",component:"div",className:t.page},"You\u2019ll find default"," ",e.createElement(a,{href:"/soundcheck/tracks",className:t.link,target:"_blank",rel:"noopener noreferrer"},"tracks"),", ",e.createElement(a,{href:"/soundcheck/checks",className:t.link,target:"_blank",rel:"noopener noreferrer"},"checks"),", ","and"," ",e.createElement(a,{href:"/soundcheck/integrations",className:t.link,target:"_blank",rel:"noopener noreferrer"},"integrations")," ","to get you started. If you want, you can change and delete these at any time."),e.createElement(o,{variant:"body1",component:"div",className:t.page},"Check out our"," ",e.createElement(a,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/",className:t.link,target:"_blank",rel:"noopener noreferrer"},"documentation")," ","to learn more about Soundcheck."),e.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-end"}},e.createElement(m,{onClick:r,variant:"contained"},"Got it"))))};export{k as WelcomeModal};
|
|
2
|
+
//# sourceMappingURL=WelcomeModal.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{makeStyles as a}from"@material-ui/core";const t=a(i=>({grid:{padding:i.spacing(0),margin:i.spacing(0),width:"100%"},helpSection:{padding:i.spacing(1),margin:i.spacing(1)},howDoIList:{backgroundColor:i.palette.background.paper,width:"100%",padding:i.spacing(2),margin:i.spacing(1)},bgColorEven:{backgroundColor:i.palette.background.default,minHeight:"65px"},bgColorOdd:{backgroundColor:i.palette.background.paper,minHeight:"65px"},headers:{marginBottom:i.spacing(1),fontSize:"1.2rem"},divider:{marginTop:i.spacing(1),marginBottom:i.spacing(1)},cards:{width:"100%"},introTitle:{padding:i.spacing(1),paddingTop:i.spacing(2),paddingLeft:i.spacing(2),margin:"0, 3rem, 0, 0",display:"flex",flexDirection:"column",minHeight:"100vh"},page:{marginBottom:i.spacing(2)},link:{color:i.palette.link},list:{paddingLeft:i.spacing(0),padding:i.spacing(1)},mainPoint:{marginBottom:i.spacing(1),fontSize:"1.1rem",fontStyle:"italic"},modal:{padding:i.spacing(4)},card:{padding:i.spacing(1),margin:i.spacing(1),alignContent:"center"},cardGrid:{padding:i.spacing(1),alignItems:"left",justifyContent:"left",width:"100%",textDecoration:"none",color:i.palette.text.primary},description:{margin:"0px",padding:"0px",textDecoration:"none"},buttonBox:{marginTop:"auto"},dontYellAtMeButton:{alignSelf:"flex-end",textTransform:"none",marginTop:"auto",width:"100%",borderRadius:"30px",borderStyle:"solid",borderWidth:"1px",padding:i.spacing(.75),paddingLeft:i.spacing(2),paddingRight:i.spacing(2)},headerButton:{fontSize:i.typography.body2.fontSize,textTransform:"none"}}));export{t as useQuickstartStyles};
|
|
2
|
+
//# sourceMappingURL=styles.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Page as
|
|
1
|
+
import{Page as F,TabbedLayout as l}from"@backstage/core-components";import{useApi as s,featureFlagsApiRef as S,configApiRef as L}from"@backstage/core-plugin-api";import{usePermission as c}from"@backstage/plugin-permission-react";import{makeStyles as D,Box as i}from"@material-ui/core";import{SpotifyLicenseBanner as H}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as N,soundcheckCollectorReadPermission as O,soundcheckCheckCreatePermission as B,soundcheckTrackCreatePermission as G}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{Routes as Q,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import{UserProvider as $}from"../../contexts/UserProvider.esm.js";import q from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as M}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignDetailsPage as U}from"../CampaignDetailsPage/CampaignDetailsPage.esm.js";import{CampaignsPage as V}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as W}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as j}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as z}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckPage as J}from"../CheckPage/CheckPage.esm.js";import{CheckInsightsPage as p}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as K}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as X}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as Y}from"../CollectorPage/CollectorPage.esm.js";import{CollectorsPage as Z}from"../CollectorsPage/CollectorsPage.esm.js";import{OverviewPageContent as _}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as ee}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as te}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as ae}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as ne}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as le}from"../TechHealth/TechHealth.esm.js";import{TrackCreatePage as re}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as ce}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as me}from"../TrackPage/TrackPage.esm.js";import{TracksTab as ie}from"../TracksTab/TracksTab.esm.js";const oe=D(m=>({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:`${m.spacing(3)}px !important`}}})),se=({title:m="Soundcheck"})=>{const r=oe(),a=s(S),d=s(L).getOptionalStringArray("soundcheck.flags"),h=(!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-tech-health")||a.isActive("soundcheck-enable-tech-health"))&&!d?.includes("soundcheck-disable-tech-health"),u=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-collectors")||a.isActive("soundcheck-enable-collectors"),o=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-campaigns")||a.isActive("soundcheck-enable-campaigns"),{loading:g,allowed:k}=c({permission:N}),E=!g&&k,{loading:f,allowed:C}=c({permission:O}),{loading:b,allowed:P}=c({permission:B}),v=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-check-creation")||a.isActive("soundcheck-enable-check-creation"),x=!b&&P&&v,{loading:R,allowed:w}=c({permission:G}),T=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-track-creation")||a.isActive("soundcheck-enable-track-creation"),I=!R&&w&&T,y=u&&!f&&C,A=h;return e.createElement(M,null,e.createElement($,null,e.createElement(ne,null,e.createElement(ae,null,e.createElement(q,null,e.createElement(i,{className:r.root},e.createElement(F,{themeId:"website"},e.createElement(H,{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.createElement(te,{documentTitle:m}),e.createElement(i,{className:r.pageContent},e.createElement(i,{className:r.pageLayout},e.createElement(Q,null,o&&e.createElement(e.Fragment,null,e.createElement(t,{path:"/campaigns/:campaignId/edit",element:e.createElement(j,null)}),e.createElement(t,{path:"/campaigns/:campaignId",element:e.createElement(U,null)}),E&&e.createElement(t,{path:"/campaigns/create",element:e.createElement(W,null)})),e.createElement(t,{path:"/quickstart",element:e.createElement(ee,null)}),e.createElement(t,{path:"/tracks/:trackId/edit",element:e.createElement(ce,null)}),I&&e.createElement(t,{path:"/tracks/create",element:e.createElement(re,null)}),e.createElement(t,{path:"/tracks/:trackId",element:e.createElement(me,null)}),e.createElement(t,{path:"/tracks/:trackId/checks/:checkId",element:e.createElement(p,null)}),e.createElement(t,{path:"/checks/:checkId",element:e.createElement(p,null)}),e.createElement(t,{path:"/checks/:checkId/edit",element:e.createElement(J,null)}),x&&e.createElement(e.Fragment,null,e.createElement(t,{path:"/checks/create",element:e.createElement(z,null)}),e.createElement(t,{path:"/checks/templates",element:e.createElement(X,null)})),e.createElement(t,{path:"/integrations/:integrationId",element:e.createElement(Y,null)}),e.createElement(t,{path:"/*",element:e.createElement(l,null,e.createElement(l.Route,{title:"Overview",path:"/"},e.createElement("div",{className:r.tabContent},e.createElement(_,{campaignsEnabled:!0}))),A&&e.createElement(l.Route,{title:"Tech Health",path:"/tech-health"},e.createElement(le,null)),e.createElement(l.Route,{title:"Checks",path:"/checks"},e.createElement(K,null)),e.createElement(l.Route,{title:"Tracks",path:"/tracks"},e.createElement(ie,null)),o&&e.createElement(l.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(V,null)),y&&e.createElement(l.Route,{title:"Integrations",path:"/integrations"},e.createElement(Z,null)))}))," ")))))))))};export{se as RoutingPage};
|
|
2
2
|
//# sourceMappingURL=RoutingPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as u,TextField as h,InputAdornment as o,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import E from"@material-ui/icons/Search";import e,{useRef as x,useEffect as B}from"react";const I=u(t=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:t.palette.text.primary,paddingLeft:t.spacing(1)},iconWrapper:{marginLeft:0}})),N=({searchTerm:t,setSearchTerm:c,showClear:l=!0,placeholder:s="Search...",disabled:a,...
|
|
1
|
+
import{makeStyles as u,TextField as h,InputAdornment as o,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import E from"@material-ui/icons/Search";import e,{useRef as x,useEffect as B}from"react";const I=u(t=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:t.palette.text.primary,paddingLeft:t.spacing(1)},iconWrapper:{marginLeft:0}})),N=({searchTerm:t,setSearchTerm:c,showClear:l=!0,placeholder:s="Search...",disabled:a,...i})=>{const r=I(),n=x(null);B(()=>{!a&&n.current&&n.current.focus()},[a]);const m=d=>{c(d.target.value)},p=()=>{c("")};return e.createElement(h,{...i,disabled:a,inputRef:n,fullWidth:!0,placeholder:s,value:t,onChange:m,InputProps:{className:r.searchBar,startAdornment:e.createElement(o,{className:r.iconWrapper,position:"start"},e.createElement(E,{className:r.searchIcon,"data-testid":"search-icon"})),endAdornment:l&&t?e.createElement(o,{position:"end"},e.createElement(f,{edge:"end",onClick:p,className:r.clearButton},e.createElement(g,null))):null}})};export{N as SearchBar};
|
|
2
2
|
//# sourceMappingURL=SearchBar.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as N}from"@backstage/catalog-model";import{makeStyles as b,Grid as
|
|
1
|
+
import{parseEntityRef as N}from"@backstage/catalog-model";import{makeStyles as b,Grid as F,InputLabel as r,NativeSelect as n}from"@material-ui/core";import e from"react";import"../CampaignsPage/CampaignListPage/CampaignListPage.esm.js";import{CampaignStatus as m}from"../CampaignsPage/CampaignListPage/CampaignTypes.esm.js";import{SearchBar as v}from"../SearchBar/SearchBar.esm.js";const y=b(t=>({searchbar:{maxWidth:"275px","& input":{paddingTop:t.spacing(1),paddingBottom:t.spacing(1)}},filters:{display:"flex",alignItems:"center",padding:0},dropdownFilters:{margin:"0 15px",alignItems:"center"},selectHolder:{minWidth:105,"& select":{paddingTop:t.spacing(1),paddingBottom:t.spacing(1)}},label:{marginBottom:t.spacing(.5)}})),S=({searchPlaceholder:t,isLoading:c,searchTerm:o,setSearchTerm:d,filterAlpha:p,handleAlphabeticalFilterChange:h,filterOwner:g,handleOwnerFilterChange:E,filterStatus:s,handleStatusFilterChange:i,owners:u})=>{const a=y();return e.createElement(F,{item:!0,xs:10,className:a.filters},e.createElement("div",null,e.createElement(r,{className:a.label,htmlFor:"search-bar"},t||"Search"),e.createElement(v,{searchTerm:o,disabled:c,setSearchTerm:d,placeholder:"Name",variant:"outlined",size:"small",className:a.searchbar,id:"search-bar"})),e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"sort-by"},"Sort By"),e.createElement(n,{id:"sort-by",className:a.selectHolder,value:p,onChange:h},e.createElement("option",{value:"ascending"},"Name A-Z"),e.createElement("option",{value:"descending"},"Name Z-A"))),e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"filter-owner"},"Filter By Owner"),e.createElement(n,{id:"filter-owner",className:a.selectHolder,value:g,onChange:E},e.createElement("option",{key:"all",value:"all"},"All"),u?.map((l,f)=>e.createElement("option",{key:l+f,value:l},N(l).name)))),s&&i&&e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"filter-status"},"Filter By Status"),e.createElement(n,{id:"filter-status",className:a.selectHolder,value:s,onChange:i},Object.keys(m).map(l=>e.createElement(e.Fragment,{key:l},e.createElement("option",{value:l},m[l]))))))};export{S as SearchFilters};
|
|
2
2
|
//# sourceMappingURL=SearchFilters.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withStyles as c,Dialog as i,Slide as p,AppBar as d,Toolbar as m,Typography as s,IconButton as g,Box as f}from"@material-ui/core";import{makeStyles as u}from"@material-ui/core/styles";import h from"@material-ui/icons/Close";import t from"react";const k=u(e=>({appBar:{position:"relative",color:`${e.palette.text.primary} !important`,backgroundColor:`${e.palette.background.default} !important`,paddingRight:"0 !important"},title:{flex:1,fontSize:e.typography.h6.fontSize},closeIcon:{marginRight:0},content:{flex:"1 0 auto",padding:e.spacing(2),marginBottom:e.spacing(2),overflowX:"hidden",overflowY:"hidden","& .wmde-markdown-var":{"--color-canvas-default":e.palette.background.paper,"--color-border-default":e.palette.border},"& .wmde-markdown":{"--color-canvas-default":e.palette.background.paper}}})),S=c({paperFullScreen:{padding:0}})(i),b=t.forwardRef(function(e,o){return t.createElement(p,{direction:"up",ref:o,...e})}),w=({open:e,handleClose:o,title:l,children:r,fullScreen:n=!0})=>{const a=k();return t.createElement(S,{fullScreen:n,open:e,onClose:o,TransitionComponent:b,className:a.title,maxWidth:"lg"},t.createElement(d,{className:a.appBar},t.createElement(m,null,t.createElement(s,{className:a.title,"data-testid":`dialog-${l}`},l),t.createElement(g,{"data-testid":"close-dialog",edge:"end",color:"inherit",onClick:o,"aria-label":"close",className:a.closeIcon},t.createElement(h,null)))),t.createElement(f,{className:a.content},r))};export{w as SoundcheckDialog};
|
|
2
|
+
//# sourceMappingURL=SoundcheckDialog.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Link as n}from"@backstage/core-components";import{useRouteRef as p}from"@backstage/core-plugin-api";import{makeStyles as d,Breadcrumbs as b,Typography as s}from"@material-ui/core";import t from"react";import{useLocation as u}from"react-router-dom";import{rootRouteRef as f}from"../../routes.esm.js";const i=d(e=>({breadcrumbs:{marginBottom:e.spacing(1),color:e.page.fontColor,fontSize:e.typography.body2.fontSize},link:{color:"inherit"},endText:{fontWeight:"bold"}})),y=({pages:e})=>{const o=p(f),r=i(),m=u().pathname===o();return t.createElement(b,{className:r.breadcrumbs,"aria-label":"breadcrumb"},!!m&&t.createElement(s,{variant:"body2",className:r.endText},"Soundcheck"),!m&&t.createElement(n,{className:r.link,to:o()},"Soundcheck"),e.map(({title:c,path:a},l)=>a?t.createElement(n,{className:r.link,to:a,key:a,relative:"path"},c):t.createElement(s,{variant:"body2",className:r.endText,key:`${l}`},c)))};export{y as Breadcrumbs,i as useBreadcrumbStyles};
|
|
2
|
+
//# sourceMappingURL=Breadcrumbs.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Header as E}from"@backstage/core-components";import{useRouteRef as s}from"@backstage/core-plugin-api";import{makeStyles as k,Link as b,Typography as p,Button as v}from"@material-ui/core";import R from"@material-ui/icons/InfoOutlined";import S from"@material-ui/icons/MenuBook";import e,{useContext as y}from"react";import{useLocation as N,useNavigate as T}from"react-router-dom";import{rootRouteRef as x,quickstartRouteRef as C}from"../../routes.esm.js";import{Breadcrumbs as L}from"./Breadcrumbs.esm.js";import{generateBreadcrumbs as z}from"./headerUtil.esm.js";import{SoundcheckHeaderContext as B}from"./SoundcheckHeaderContext.esm.js";const w=k(t=>({subtitle:{maxWidth:"75%",marginTop:t.spacing(.5),whiteSpace:"pre-line"},docLink:{display:"flex",alignItems:"center",marginTop:t.spacing(.5),marginBottom:t.spacing(0),width:"fit-content",fontSize:t.typography.body2.fontSize,color:"inherit"},descriptionIcon:{marginRight:t.spacing(.25)},header:{color:t.page.fontColor},link:{},button:{textTransform:"none",marginRight:t.spacing(2),color:t.page.fontColor},icon:{paddingRight:t.spacing(1)}})),H=({documentTitle:t})=>{const{title:r,description:o,docLink:i,customSubtitle:a,sectionRight:c}=y(B),n=w(),l=N().pathname?.replace(/\/+$/,"")??"",d=z(l),u=s(x),m=l===u(),g=s(C),f=T(),h=g();return e.createElement(E,{pageTitleOverride:t,title:e.createElement(e.Fragment,null,m?e.createElement("div",null,r):e.createElement("div",null,e.createElement(L,{pages:d}),r)),subtitle:e.createElement("div",{className:n.header},i&&e.createElement(b,{target:"_blank",href:i,className:n.docLink},e.createElement(R,{className:n.descriptionIcon,fontSize:"inherit"}),"Documentation"),!!a&&e.createElement("div",null,a),typeof o=="string"?e.createElement(p,{className:n.subtitle,variant:"body2",color:"inherit"},o):e.createElement("div",null,o))},m&&e.createElement(v,{className:n.button,onClick:()=>f(h),color:"inherit",variant:"outlined"},e.createElement(S,{className:n.icon}),e.createElement(p,null,"Get Started with Soundcheck")),!!c&&e.createElement("div",null,c))};export{H as SoundcheckHeader};
|
|
2
|
+
//# sourceMappingURL=SoundcheckHeader.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import S,{createContext as h,useState as e}from"react";const t=h({title:"Soundcheck",updateTitle:()=>{},updateDescription:()=>{},updateDocLink:()=>{},updateCustomSubtitle:()=>{},updateSectionRight:()=>{}}),k=({children:i})=>{const[o,c]=e("Soundcheck"),[u,d]=e(),[n,r]=e(),[a,p]=e(),[s,l]=e();return S.createElement(t.Provider,{value:{title:o,updateTitle:c,description:u,updateDescription:d,docLink:n,updateDocLink:r,customSubtitle:a,updateCustomSubtitle:p,sectionRight:s,updateSectionRight:l}},i)};export{t as SoundcheckHeaderContext,k as SoundcheckHeaderProvider};
|
|
2
|
+
//# sourceMappingURL=SoundcheckHeaderContext.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const n=c=>{const e={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/campaigns/create":"Create","^/soundcheck/campaigns/.*/edit":"Edit","^/soundcheck/campaigns/[^/]+$":"Campaign Details","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/create":"Create","^/soundcheck/tracks/.*/edit":"Edit","^/soundcheck/tracks/[^/]+$":"Track Details","^/soundcheck/tracks/.*/checks/[^/]+$":"Check Details","^/soundcheck/checks$":"Checks","^/soundcheck/checks/.*/edit":"Edit","^/soundcheck/checks/create":"Create","^/soundcheck/checks/templates$":"Templates","^/soundcheck/checks/[^/]+$":"Details","^/soundcheck/integrations/[^/]+$":"Configure","^/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/quickstart":"Quick Start"};for(const[t,s]of Object.entries(e))if(new RegExp(t).test(c))return s;return null},k=c=>c.split("/").filter(e=>e).map((e,t,s)=>{const a=`/${s.slice(0,t+1).join("/")}`,h=n(a);if(h)return a===c?{title:h}:{path:a,title:h}}).filter(e=>!!e);export{k as generateBreadcrumbs};
|
|
2
|
+
//# sourceMappingURL=headerUtil.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useContext as k,useEffect as R}from"react";import{SoundcheckHeaderContext as D}from"./SoundcheckHeaderContext.esm.js";const f={title:"Soundcheck",description:void 0,docLink:void 0,customSubtitle:void 0,sectionRight:void 0},h=({title:t,description:e,docLink:i,customSubtitle:o,sectionRight:c})=>{const{updateTitle:d,title:u,updateDescription:s,description:n,docLink:p,updateDocLink:r,customSubtitle:a,updateCustomSubtitle:l,sectionRight:S,updateSectionRight:m}=k(D);R(()=>{u!==t&&d(t),n!==e&&s(e),p!==i&&r(i),a!==o&&l(o),S!==c&&m(c)},[t,e,d,s,u,n,p,i,r,a,l,o,S,c,m])},L=()=>{h(f)};export{f as DEFAULT_HEADER,h as useHeader,L as useSetHeaderDefault};
|
|
2
|
+
//# sourceMappingURL=useHeader.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as x}from"@backstage/core-components";import{withStyles as g,Card as u,makeStyles as w,CardHeader as C,CardContent as
|
|
1
|
+
import{MarkdownContent as x}from"@backstage/core-components";import{withStyles as g,Card as u,makeStyles as w,CardHeader as C,CardContent as v,Divider as k,CardActions as f,Button as E}from"@material-ui/core";import{createStyles as N}from"@material-ui/core/styles";import t from"react";import{SummaryCardActionsMenu as S}from"./SummaryCardActionsMenu.esm.js";const c=g(e=>N({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative",justifyContent:"start"}}))(u),p=w(e=>({root:{position:"relative",height:"100%"},summaryName:{fontSize:e.typography.pxToRem(24),color:e.palette.text.primary,maxHeight:"250px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical","-webkit-line-clamp":5,"-webkit-box-orient":"vertical",wordBreak:"break-word"},summaryDescription:{color:e.palette.text.primary,padding:0,maxHeight:"175px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical",wordBreak:"break-word"},card:{paddingTop:e.spacing(1),paddingBottom:0,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),borderColor:e.palette.divider},cardContent:{height:"100%"},actionArea:{padding:e.spacing(1.5,2,1.5,4)},button:{minWidth:0,color:e.palette.text.primary,"&:disabled":{color:e.palette.text.disabled,opacity:1}}})),A=({title:e,description:h,viewLabel:l="View",editLabel:n="Edit",children:b,handleDelete:d,handleArchive:m,handleEdit:a,handleView:r,handleExport:s,viewIsPrimaryAction:y})=>{const i=p(),o=!y&&!!a;return t.createElement(c,{className:i.card,"data-testid":e},t.createElement(C,{title:e,titleTypographyProps:{className:i.summaryName},subheader:t.createElement(x,{className:i.summaryDescription,content:h??""}),action:(!!d||!!m||!!a||!!s)&&t.createElement(S,{handleView:r,handleDelete:d,handleArchive:m,handleEdit:a,handleExport:s})}),t.createElement(v,{className:i.cardContent},b),(r||a)&&t.createElement("div",null,t.createElement(k,null),t.createElement(f,{className:i.actionArea},t.createElement(E,{"aria-label":o?n:l,"data-testid":`${e}-button`,size:"medium",role:"link",onClick:o?a:r,disabled:!r&&!a,className:i.button,variant:"outlined"},o?n:l))))};export{c as Card,A as SummaryCard,p as useSummaryCardStyles};
|
|
2
2
|
//# sourceMappingURL=SummaryCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as F,alpha as w,Box as i,Typography as z,Tooltip as L,Icon as N,IconButton as O,Chip as T,TextField as D,FormControlLabel as j,Checkbox as B}from"@material-ui/core";import V from"@material-ui/icons/ArrowDropDown";import $ from"@material-ui/icons/ArrowDropUp";import A from"@material-ui/icons/CheckBox";import H from"@material-ui/icons/CheckBoxOutlineBlank";import K from"@material-ui/icons/HelpOutline";import{Autocomplete as W}from"@material-ui/lab";import{remove as q}from"lodash";import l,{useState as p,useEffect as J,useCallback as y,useMemo as M}from"react";import P from"../../Expand/Expand.esm.js";import{ListboxVirtualized as Q}from"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useFilterContext as G}from"./FilterProvider.esm.js";import{Facet as x,facetTooltips as C}from"./types.esm.js";const R=F(({palette:t,spacing:n})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:t.text.primary},chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:n(.5,.5,.5,0),overflow:"hidden","& svg":{color:w(t.common.white,.7),"&:hover":{color:t.common.white}},backgroundColor:t.action.disabledBackground},autoCompleteInput:{"&& input":{margin:n(1,0,0,0),padding:`${n(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:n(.5,0,1,0)},selectionLabel:{lineHeight:"1em"}})),U=({facet:t})=>{const n=R(),{getFacetOptions:k,getFacetOptionLabel:c,getSelectedFacetValues:a,setSelectedFacetValues:u}=G(),[f,d]=p(!1),[v,h]=p(!1),[I,b]=p("");J(()=>{d(!!a(t)?.length)},[a,t]);const E=()=>{d(e=>!e)},g=e=>{(e.key==="Enter"||e.key===" ")&&E()},m=y(e=>{if(t===x.Entity&&e[e.length-1]){const o=e[e.length-1];if(!o.includes(":")||!o.includes("/")){h(!0),b("Custom entities require a valid kind and namespace such as: component:default/entity");return}}h(!1),b(""),u(t,e)},[t,u]),r=M(()=>a(t),[t,a]),S=y(e=>{const o=[...r];q(o,s=>s===e),m(o)},[r,m]);return l.createElement(i,null,l.createElement("div",{className:n.header,onClick:E,onKeyDown:g,role:"button",tabIndex:0},l.createElement("div",{className:n.label},l.createElement(i,null,l.createElement(z,{variant:"subtitle2"},t)),C[t]&&l.createElement(L,{title:C[t],className:n.tooltipIcon},l.createElement(N,null,l.createElement(K,{style:{fontSize:16,verticalAlign:"text-top"}})))),l.createElement(i,null,l.createElement(O,{size:"small",onKeyDown:g},f?l.createElement($,{fontSize:"small"}):l.createElement(V,{fontSize:"small"})))),l.createElement(P,{visible:f},l.createElement(i,null,r.map(e=>l.createElement(T,{key:e,label:c(t,e),size:"small",className:n.chip,onDelete:()=>S(e),clickable:!1}))),l.createElement(W,{className:n.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:t===x.Entity,popupIcon:null,renderTags:()=>null,options:k(t),getOptionLabel:e=>c(t,e),value:r,onChange:(e,o)=>m(o),ListboxComponent:Q,ListboxProps:{itemHeight:50},renderInput:e=>l.createElement(D,{...e,className:n.autoCompleteInput,placeholder:`Search for ${t}`,error:v,helperText:I}),renderOption:(e,{selected:o})=>l.createElement(j,{onClick:s=>s.preventDefault(),control:l.createElement(B,{icon:l.createElement(H,{fontSize:"small"}),checkedIcon:l.createElement(A,{fontSize:"small"}),checked:o}),classes:{label:n.selectionLabel},label:c(t,e)})})))};export{U as FacetFilter};
|
|
2
2
|
//# sourceMappingURL=FacetFilter.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TabbedLayout as r}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as i}from"@backstage/core-plugin-api";import{makeStyles as
|
|
1
|
+
import{TabbedLayout as r}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as i}from"@backstage/core-plugin-api";import{makeStyles as p,Box as n}from"@material-ui/core";import e from"react";import{Routes as c,Route as s}from"react-router-dom";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as u}from"../SoundcheckHeader/useHeader.esm.js";import{TechHealthSummary as d}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../StyledTooltip/StyledTooltip.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as f}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as x}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as b}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as h}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as E}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as g}from"./Filters/FilterProvider.esm.js";import{Filters as k}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const R=p(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),T=()=>{u();const t=R(),l=m(i),a=!l.getRegisteredFlags().find(o=>o.name==="soundcheck-enable-campaigns")||l.isActive("soundcheck-enable-campaigns");return e.createElement(g,null,e.createElement("div",{className:t.container},e.createElement("div",{className:t.fixedColumn},e.createElement(k,null)),e.createElement("div",{className:t.flexibleColumn},e.createElement(n,{className:t.pageLayout,"aria-label":"tech health tabs"},e.createElement(c,null,e.createElement(s,{path:"/*",element:e.createElement(r,null,e.createElement(r.Route,{title:"Summary",path:"/"},e.createElement(d,null)),a&&e.createElement(r.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(h,null)),e.createElement(r.Route,{title:"Checks",path:"/checks"},e.createElement(E,null)),e.createElement(r.Route,{title:"Tracks",path:"/tracks"},e.createElement(f,null)),e.createElement(r.Route,{title:"Entities",path:"/entities"},e.createElement(x,null)),e.createElement(r.Route,{title:"Teams",path:"/teams"},e.createElement(b,null)))}))))))};export{T as TechHealth};
|
|
2
2
|
//# sourceMappingURL=TechHealth.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Button as
|
|
1
|
+
import{Button as r,Typography as i}from"@material-ui/core";import e from"react";import{useNavigate as m}from"react-router-dom";import{StyledTooltip as s}from"../StyledTooltip/StyledTooltip.esm.js";import{usePassRateTabStyles as c}from"./PassRateTabStyles.esm.js";const d=({navigateTo:l,disabled:t,toolTipText:n})=>{const a=c(),o=m();return l?n?e.createElement(s,{title:n},e.createElement("span",null,e.createElement(r,{variant:"text",className:a.detailButton,onClick:()=>o(l),disabled:t},e.createElement(i,{style:t?{textDecoration:"line-through"}:{},className:a.ownerText},"View detail")))):e.createElement(r,{variant:"text",className:a.detailButton,disabled:t},e.createElement(i,{style:t?{textDecoration:"line-through"}:{},className:a.ownerText,onClick:()=>o(l)},"View detail")):e.createElement(e.Fragment,null)};export{d as ActionColumn};
|
|
2
2
|
//# sourceMappingURL=ActionColumn.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as v}from"@backstage/core-plugin-api";import{Typography as
|
|
1
|
+
import{useRouteRef as v}from"@backstage/core-plugin-api";import{Typography as R,Box as L,Grid as N}from"@material-ui/core";import r,{useState as m,useEffect as A}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{useCheckPassRateTrend as D}from"../../../hooks/aggregations/useCheckPassRateTrend.esm.js";import"react-router-dom";import{checkDetailsRouteRef as y}from"../../../routes.esm.js";import{checkPassRatesCsvFilename as M}from"../../../utils/charts.esm.js";import{PassRateGrid as O}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as S}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 x}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 F}from"../../TechHealth/Loading/Loading.esm.js";import{NameColumn as G}from"../NameColumn.esm.js";import{ActionColumn as B}from"../ActionColumn.esm.js";import{OwnerColumn as I}from"../OwnerColumn.esm.js";import{checkPassRatesToCsv as V}from"../TechHealthExportFunctions.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as H}from"../PassRateTabStyles.esm.js";import{ViewMode as C,generateCheckPassRateGridData as W}from"../techHealthTabUtils.esm.js";import"recharts";import"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../../Charts/BarChart/BarChart.esm.js";import"../../PassRateTable/NewPassRateTable.esm.js";import{MostRecentColumn as j}from"../MostRecentColumn.esm.js";import{CheckTrendColumn as q}from"./CheckTrendColumn.esm.js";function J(s){return[{label:"NAME",id:"checkName",renderCell:e=>r.createElement(G,{name:e.checkName??e.id,description:e.checkDescription})},{label:"LATEST",id:"snapshotPassRate",renderCell:e=>r.createElement(j,{snapshot:e.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:e=>r.createElement(q,{row:e})},{label:"OWNER",id:"checkOwner",renderCell:e=>r.createElement(I,{ownerEntityRef:e.checkOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:(e,o,n)=>r.createElement(B,{navigateTo:s({checkId:e.id}),disabled:o,toolTipText:n})}]}const K=()=>{const s=H(),{filter:e}=x(),o=v(y),{data:n,isLoading:u,isError:E}=D(e),[c,k]=m(C.TABLE),[t,T]=m(""),[l,p]=m(0),[d,P]=m(10);if(A(()=>{p(0)},[e,t]),u)return r.createElement(F,null);if(E)return r.createElement(R,{color:"error"},"Failed to load checks");const{individualCheckPassRates:h}=n;if(!h)return r.createElement(R,{color:"error"},"No available checks");const a=t.length?h.filter(({id:i,checkName:f})=>f?.toLowerCase()?.includes(t.toLowerCase())||i.toLowerCase().includes(t.toLowerCase())):h,w=async()=>V(a),g=(i,f)=>{p(()=>f)},b=i=>{P(+i.target.value),p(0)};return r.createElement(L,{className:s.root},r.createElement(N,{container:!0,direction:"row"},r.createElement(z,{viewMode:c,setViewMode:k,isLoading:u,searchTerm:t,setSearchTerm:T,searchPlaceholder:"Search for Available Checks",fetchCsvData:w,csvFilename:M}),c===C.TABLE&&r.createElement(S,{data:a,columns:J(o),showsCheckData:!0}),c===C.GRID&&r.createElement(O,{data:W(a.slice(l*d,(l+1)*d),o),totalCount:a?.length??0,page:l,rowsPerPage:d,onPageChange:g,onRowsPerPageChange:b})))};export{K as CheckResultsTab};
|
|
2
2
|
//# sourceMappingURL=CheckResultsTab.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import t,{useEffect as s}from"react";import{TrackFormProvider as p,useTrackFormContext as l}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"@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{useCreateTrack as k}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{tracksPageRouteRef as f}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as d}from"../TrackForm/TrackForm.esm.js";const o=()=>{const{setIsLoading:e}=l(),{mutateAsync:i,isLoading:r}=k();s(()=>{e(r)},[e,r]);const[a,m]=u(f),c=async n=>{await i(n,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t.createElement(d,{handleClose:a,onSave:c})},h=()=>t.createElement(p,null,t.createElement(o,null));export{h as TrackCreatePage,o as TrackCreateView};
|
|
2
|
+
//# sourceMappingURL=TrackCreatePage.esm.js.map
|
package/dist/components/{EditTrackPage/EditTrackPage.esm.js → TrackEditPage/TrackEditPage.esm.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{usePermission as n}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as p,soundcheckTrackReadPermission as d}from"@spotify/backstage-plugin-soundcheck-common";import r from"react";import{useParams as l}from"react-router-dom";import{TrackFormProvider as f}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"@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{useGetAllTracks as u}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as k}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as g}from"../PageWarningMessage/PageWarningMessage.esm.js";import{
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{usePermission as n}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as p,soundcheckTrackReadPermission as d}from"@spotify/backstage-plugin-soundcheck-common";import r from"react";import{useParams as l}from"react-router-dom";import{TrackFormProvider as f}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"@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{useGetAllTracks as u}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as k}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as g}from"../PageWarningMessage/PageWarningMessage.esm.js";import{TrackEditView as E}from"./TrackEditView.esm.js";const P=()=>{const{trackId:e}=l(),{data:s,isLoading:t}=u({ids:[e??""],first:1}),o=s?.edges?.[0]?.node,{loading:i,allowed:c}=n({permission:p,resourceRef:e}),{loading:m,allowed:a}=n({permission:d,resourceRef:e});return r.createElement(r.Fragment,null,r.createElement(g,{entityName:"track",entityId:e,showNotFound:!t&&!o,showCannotView:!i&&!m&&!a}),t||i||m?r.createElement(k,null):a&&o&&r.createElement(f,null,r.createElement(E,{track:o,canEdit:c})))};export{P as TrackEditPage};
|
|
2
|
+
//# sourceMappingURL=TrackEditPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import l,{useEffect as e,useCallback as f}from"react";import{useTrackFormContext as E}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"@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"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as g}from"../../hooks/useNavigateBack.esm.js";import{useUpdateTrack as y}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:i,setIsLoading:c,selectedItem:n,showReadOnly:r}=E(),{mutateAsync:m,isLoading:s}=y();e(()=>c(s),[c,s]);const o=!p||!t.isEditable;e(()=>{o?r(t):i(t)},[t,i,o,r]);const[d,a]=g(h),k=f(async u=>{await m(u,{onSuccess:a})},[a,m]);return e(()=>{},[t,r,o]),T({title:`${o?"View":"Edit"} Track`,description:"Edit your track's details to match your needs.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),n?l.createElement(w,{handleClose:d,onSave:k}):null};export{b as TrackEditView};
|
|
2
|
+
//# sourceMappingURL=TrackEditView.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
|
|
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 f}from"../../../../SearchBar/SearchBar.esm.js";const E=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=E(),[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(f,{searchTerm:c,disabled:t||a,setSearchTerm:p,placeholder:"Search for 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
|
|
1
|
+
import p from"react";import{useFormContext as m}from"react-hook-form";import{FormMarkdownInput as a}from"../../../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as d}from"../../../utils/trackFormUtils.esm.js";const l=({isLoading:e,disabled:r})=>{const{control:o,formState:{errors:t}}=m(),{name:i,placeholder:n}=d.description;return p.createElement(a,{name:"detailsStep.description",control:o,error:t.detailsStep?.description,label:i,placeholder:r?void 0:n,disabled:r||e})};export{l as TrackDescriptionInput};
|
|
2
2
|
//# sourceMappingURL=TrackDescriptionInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as l,Typography as c}from"@material-ui/core";import e from"react";import{useFormContext as d}from"react-hook-form";import{FormTextInput as s}from"../../../../FormTextInput/FormTextInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as p}from"../../../utils/trackFormUtils.esm.js";const u=l(t=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:t.spacing(1)}})),f=({isLoading:t,disabled:r})=>{const o=u(),{control:a,formState:{errors:n}}=d(),{name:i,placeholder:m}=p.documentationURL;return e.createElement("div",{className:o.container},e.createElement("div",null,e.createElement(c,{variant:"subtitle2"},i)),e.createElement("div",{className:o.fieldContainer},e.createElement(s,{name:"detailsStep.documentationURL",control:a,placeholder:m,disabled:r||t,variant:"outlined",margin:"dense",error:n?.detailsStep?.documentationURL,helperText:n?.detailsStep?.documentationURL?.message??void 0})))};export{f 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 s,TextField as d}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{useFormContext as f,Controller as x}from"react-hook-form";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as u}from"../../../utils/trackFormUtils.esm.js";const T=c(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),g=({disabled:t,isLoading:l})=>{const r=T(),{control:o,formState:{errors:a}}=f(),{placeholder:n,name:m,helperText:i}=u.name;return e.createElement("div",{className:r.container},e.createElement("div",null,e.createElement(s,{variant:"subtitle2"},m)),e.createElement(x,{name:"detailsStep.name",control:o,defaultValue:"",render:({field:p})=>e.createElement(d,{...p,FormHelperTextProps:{className:r.helperText},className:r.field,variant:"outlined",margin:"dense",fullWidth:!0,placeholder:n,disabled:l||t,type:"text",error:!!a.detailsStep?.name,helperText:a.detailsStep?.name?.message??i})}))};export{g 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 E}from"@backstage/catalog-model";import{Typography as i}from"@material-ui/core";import{makeStyles as y}from"@material-ui/core/styles";import{uniqBy as b}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 w}from"../../../../../contexts/UserProvider.esm.js";import{FormControlledAutocomplete as S}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{useLabelOptions as x}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useOptions as R}from"../../../../GroupSelector/useOptions.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as h}from"../../../utils/trackFormUtils.esm.js";const L=y(m=>({container:{display:"flex",flexDirection:"column",gap:m.spacing(1)}})),O=({disabled:m,ownerEntityRef:o})=>{const a=L(),{options:l,isLoading:p}=R(),{user:s,userEntityRef:n}=w(),{control:c,formState:{errors:f}}=g();let e=b(l.map(r=>({value:r.ref,label:r.name})),"value");n&&(e=[{value:n,label:s?.metadata.name},...e]),o&&n!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:E(o).name},...e]);const d=x(e),{name:u,description:v}=h.owner;return t.createElement("div",{className:a.container},t.createElement("div",null,t.createElement(i,{variant:"subtitle2"},u),t.createElement(i,{variant:"caption"},v)),t.createElement("div",null,t.createElement(S,{name:"detailsStep.ownerEntityRef",control:c,width:300,freeSolo:!1,disabled:m||p,helperText:f?.detailsStep?.ownerEntityRef?.message??void 0,placeholder:"Owner",...d})))};export{O as TrackOwnerSelect};
|
|
2
2
|
//# sourceMappingURL=TrackOwnerSelect.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import{DndProvider as S}from"react-dnd";import{HTML5Backend as b}from"react-dnd-html5-backend";import{FormProvider as h}from"react-hook-form";import{useTrackFormContext as
|
|
1
|
+
import{Content as f}from"@backstage/core-components";import e from"react";import{DndProvider as S}from"react-dnd";import{HTML5Backend as b}from"react-dnd-html5-backend";import{FormProvider as h}from"react-hook-form";import{useTrackFormContext as k}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{formStyles as u}from"../../utils/formStyles.esm.js";import{FormFilterSection as g}from"../FormFilterSection/FormFilterSection.esm.js";import{FormStepper as E}from"../FormStepper/FormStepper.esm.js";import{LevelsStep as T}from"./Steps/LevelsStep/LevelsStep.esm.js";import{TrackDetailsStep as C}from"./Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import{TrackStepNameMapping as F}from"./utils/types.esm.js";import"./utils/validation.esm.js";import{TRACK_FIELDS as v}from"./utils/trackFormUtils.esm.js";import{useTrackForm as L}from"./utils/useTrackForm.esm.js";const y=({onSave:i,handleClose:n})=>{const{selectedItem:a,isLoading:l,isReadOnly:r}=k(),p=u(),{formMethods:t,onSubmit:o,selectableChips:s,checksLoading:c}=L(i),m=[{label:"Enter track details",content:()=>e.createElement(C,null)},{label:"Add levels",content:()=>e.createElement(T,{selectableChips:s,checksLoading:c})},{label:"Choose the affected entities (Optional)",content:()=>e.createElement(g,{name:"filtersStep.filter",control:t.control,disabled:r,description:v.filter.description})}],d=a?[...Array(m.length).keys()]:[0];return e.createElement(S,{backend:b},e.createElement(f,{className:p.formWrapper},e.createElement(h,{...t},e.createElement("form",{onSubmit:t.handleSubmit(o)},e.createElement(E,{onClose:n,handleSubmit:t.handleSubmit,trigger:t.trigger,onSubmit:o,initialVisited:d,stepNameMap:F,steps:m,isLoading:l,isReadOnly:r,saveButtonText:"Save Track"})))))};export{y as TrackForm};
|
|
2
2
|
//# sourceMappingURL=TrackForm.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={name:{name:"Track name",
|
|
1
|
+
const e={name:{name:"Track name",helperText:"Max 100 characters",placeholder:"Example: Github Best Practices"},description:{name:"Track description",placeholder:"Example: Improve collaboration, maintain high code quality, and streamline development workflows on GitHub"},documentationURL:{name:"Documentation URL (Optional)",placeholder:"Example: https://docs.example.com"},owner:{name:"Track owner",description:"Assign yourself or your team as the owner of this track. Defaults to current user."},levels:{label:"Track Levels",description:"This is where you will add the checks for each level. You can preview the checks to see the rules that apply to each check."},filter:{description:"Use the filters below to narrow the scope of the Track. Only Entities that match the selected filters will be monitored. For example, selecting 'Kind' as 'Component' will ensure that this Check only applies to Entities categorized as 'Component,' excluding others like Groups, Users, and APIs."}};export{e as TRACK_FIELDS};
|
|
2
2
|
//# sourceMappingURL=trackFormUtils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{LevelDetailsSchema as
|
|
1
|
+
import{LevelDetailsSchema as e,TrackDetailsSchema as r}from"@spotify/backstage-plugin-soundcheck-common";import{z as t}from"zod";import{FiltersSchema as i,CHECK_IS_REQUIRED_MSG as c}from"../../../utils/validation.esm.js";const s=t.strictObject({filter:i.optional()}),a=t.strictObject({levels:t.array(e).min(1,c)}),l=t.strictObject({detailsStep:r,levelsStep:a,filtersStep:s});export{l as trackFormSchema};
|
|
2
2
|
//# sourceMappingURL=validation.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as T}from"@backstage/catalog-model";import{EntityDisplayName as $}from"@backstage/plugin-catalog-react";import{makeStyles as I,Typography as j,Checkbox as B}from"@material-ui/core";import C from"@material-ui/icons/Category";import D from"@material-ui/icons/Class";import M from"@material-ui/icons/Group";import N from"@material-ui/icons/Loop";import{toEntityFilterQuery as Q}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as G}from"react";import{useGetEntityFacets as
|
|
1
|
+
import{parseEntityRef as T}from"@backstage/catalog-model";import{EntityDisplayName as $}from"@backstage/plugin-catalog-react";import{makeStyles as I,Typography as j,Checkbox as B}from"@material-ui/core";import C from"@material-ui/icons/Category";import D from"@material-ui/icons/Class";import M from"@material-ui/icons/Group";import N from"@material-ui/icons/Loop";import{toEntityFilterQuery as Q}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as G}from"react";import{useGetEntityFacets as i}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import n from"../../MultiSelectFilter/MultiSelectFilter.esm.js";const q=I(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),c=(t,{selected:r})=>e.createElement(e.Fragment,null,e.createElement(B,{value:t,checked:r,color:"primary"}),e.createElement($,{entityRef:t,hideIcon:!0})),z=({track:t,label:r,owners:p,setOwners:y,lifecycles:f,setLifecycles:d,types:E,setTypes:u,systems:g,setSystems:b})=>{const h=q(),l=Q(t.filter),{data:L,isLoading:w}=i("relations.ownedBy",l),{data:o,isLoading:F}=i("spec.lifecycle",l),{data:s,isLoading:k}=i("spec.type",l),{data:a,isLoading:O}=i("relations.partOf",l),m=G(()=>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},r&&e.createElement(j,{variant:"caption"},`${r}:`),e.createElement(n,{name:"system",label:"System",icon:e.createElement(C,null),filters:g,setFilters:b,options:m??[],disabled:O||R,customRenderOption:c}),e.createElement(n,{name:"owner",label:"Owner",icon:e.createElement(M,null),filters:p,setFilters:y,options:L??[],disabled:w,customRenderOption:c}),e.createElement(n,{name:"type",label:"Type",icon:e.createElement(D,null),filters:E,setFilters:u,options:s??[],disabled:k||x}),e.createElement(n,{name:"lifecycle",label:"Lifecycle",icon:e.createElement(N,null),filters:f,setFilters:d,options:o??[],disabled:F||v}))};export{z as FilterBar};
|
|
2
2
|
//# sourceMappingURL=FilterBar.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
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
|
|
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 d,{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],C=g=>{const{lifecycles:i,owners:s,types:c,systems:l}=g,m=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{...m,...e,...f,...r}},A=R({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),W=({track:g,lifecycles:i,owners:s,types:c,systems:l})=>{const m=A(),[e,f]=z({orderBy:void 0,filter:C({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:C({lifecycles:i,owners:s,types:c,systems:l})}))},[i,s,c,l]);const{data:r,isLoading:k}=x({trackId:g.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}),w=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]),I=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]),h=r?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:E,isLoading:S}=P({entityRefs:h}),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:g,entity:p}):void 0}))??[];return d.createElement("div",{className:m.tableContainer},d.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:w,onPageChange:I,page:e.pageInfo.page,totalCount:r?.trackEntities.totalCount??0,isLoading:k||S,components:{Toolbar:()=>null}}))};export{W as TrackEntitiesTable};
|
|
2
2
|
//# sourceMappingURL=TrackEntitiesTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{RELATION_PART_OF as m,RELATION_OWNED_BY as
|
|
1
|
+
import{RELATION_PART_OF as m,RELATION_OWNED_BY as u,stringifyEntityRef as y}from"@backstage/catalog-model";import{getEntityRelations as d,humanizeEntityRef as a}from"@backstage/plugin-catalog-react";import f from"lodash";function p(e){return Object.keys(e).filter(t=>!["notApplicable","numberOfEntities","ordinal"].includes(t)&&typeof f.get(e,t,0)=="number").reduce((t,i)=>t+f.get(e,i,0),0)}function c(e){const{trackDetails:t,track:i,entity:n}=e,r=d(n,m,{kind:"system"}),s=d(n,u),l=y(n);return{id:l,entity:n,badge:t.badge??void 0,track:i,status:t.status,resolved:{name:a(n,{defaultKind:"Component"}),entityRef:l,ownedByRelationsTitle:s.map(o=>a(o,{defaultKind:"group"})).join(", "),ownedByRelations:s,partOfSystemRelationTitle:r.map(o=>a(o,{defaultKind:"system"})).join(", "),partOfSystemRelations:r}}}export{p as getApplicableCheckCount,c as toTrackEntityRow};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as
|
|
1
|
+
import{MarkdownContent as G,Content as T}from"@backstage/core-components";import{useRouteRef as Q}from"@backstage/core-plugin-api";import{EntityRefLink as W}from"@backstage/plugin-catalog-react";import{usePermission as L}from"@backstage/plugin-permission-react";import{makeStyles as _,Button as $,Paper as j,Tabs as q,Tab as N}from"@material-ui/core";import{soundcheckTrackReadPermission as J,soundcheckTrackUpdatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import t,{useState as X,useMemo as E}from"react";import{useParams as Y,useNavigate as Z}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 ee}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as te}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as re}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useSearchParam as f}from"../../hooks/useSearchParam.esm.js";import{trackEditRouteRef as ie}from"../../routes.esm.js";import{LevelCard as ae}from"../LevelCard/LevelCard.esm.js";import{LoadingIndicator as ne}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as oe}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as se,DEFAULT_HEADER as ce}from"../SoundcheckHeader/useHeader.esm.js";import{FilterBar as le}from"./FilterBar/FilterBar.esm.js";import{TrackEntitiesTable as me}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as de}from"./TrackProgressCard.esm.js";const R=e=>{const{lifecycles:i,owners:c,types:a,systems:m}=e,n=i?.length?{"spec.lifecycle":i}:void 0,d=c?.length?{"relations.ownedBy":c}:void 0,o=a?.length?{"spec.type":a}:void 0,p=m?.length?{"relations.partOf":m}:void 0;if(n||d||o||p)return{...n,...d,...o,...p}},pe=_(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0,marginBottom:e.spacing(2)},trackProgressContainer:{marginBottom:e.spacing(3)},trackContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},levelCard:{margin:e.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:e.spacing(3,0)},trackEntitiesContainer:{marginTop:e.spacing(1)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}}}));function P({children:e,value:i,index:c}){return t.createElement("div",{hidden:i!==c},i===c&&e)}const ue=()=>{const e=pe(),[i,c]=X(0),[a,m]=f("owners"),[n,d]=f("lifecycles"),[o,p]=f("types"),[l,B]=f("systems"),S=(g,y)=>{c(y)},{trackId:s}=Y(),{data:D,isLoading:u,isError:x}=ee({ids:[s??""],first:1}),r=D?.edges?.[0]?.node,{data:k,isLoading:h,isError:I}=te({trackId:s,filter:R({lifecycles:n,owners:a,types:o,systems:l})},!!s),{data:A,isLoading:F,isError:H}=re({trackId:s,filter:R({lifecycles:n,owners:a,types:o,systems:l}),numberOfDays:30},!!s),{loading:M,allowed:O}=L({permission:J,resourceRef:s}),{loading:v,allowed:C}=L({permission:K,resourceRef:s}),w=Z(),b=Q(ie),z=E(()=>r?.ownerEntityRef?t.createElement(W,{color:"inherit",entityRef:r.ownerEntityRef,className:e.ownerLink}):null,[r?.ownerEntityRef,e.ownerLink]),U=E(()=>!v&&C&&r?.isEditable?t.createElement($,{className:e.editButton,variant:"contained",color:"primary",onClick:()=>{w(b({trackId:r.id}))}},"Edit Track"):null,[C,e.editButton,b,v,w,r]),V=E(()=>r?.description?t.createElement(G,{className:e.headerDescription,content:r.description}):null,[e.headerDescription,r?.description]);return se({title:r?.name??ce.title,description:V,customSubtitle:z,sectionRight:U}),t.createElement("div",null,t.createElement(oe,{entityName:"track",entityId:s,showNotFound:!u&&!r,showCannotView:!M&&!O}),u&&t.createElement(ne,null),r&&t.createElement("div",{className:e.root},t.createElement(j,{elevation:1,className:e.header},t.createElement(T,{className:e.trackContainerContent},t.createElement(le,{track:r,owners:a,setOwners:m,lifecycles:n,setLifecycles:d,types:o,setTypes:p,systems:l,setSystems:B}))),t.createElement(T,{className:e.content},t.createElement("div",{className:e.trackProgressContainer},t.createElement(de,{track:r,status:k,history:A,isLoading:u||h||F,isError:x||I||H})),t.createElement("div",{className:e.tabsContainer},t.createElement(q,{value:i,onChange:S},t.createElement(N,{label:"Levels"}),t.createElement(N,{label:"Entities"})),t.createElement(P,{value:i,index:0},r&&r.levels?.map((g,y)=>t.createElement("div",{className:e.levelCard,key:g.ordinal},t.createElement(ae,{track:r,level:g,index:y,data:k,isLoading:u||h,lifecycles:n,owners:a,types:o,systems:l})))),t.createElement(P,{value:i,index:1},r&&t.createElement("div",{className:e.trackEntitiesContainer},t.createElement(me,{track:r,lifecycles:n,owners:a,types:o,systems:l})))))))};export{ue as TrackPage};
|
|
2
2
|
//# sourceMappingURL=TrackPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as o,Paper as l,Box as r,Typography as m}from"@material-ui/core";import t from"react";import{TrackHistoryChart as d}from"./TrackHistoryChart.esm.js";import{TrackLevelsChart as p}from"./TrackLevelsChart.esm.js";const f=o(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}
|
|
1
|
+
import{makeStyles as o,Paper as l,Box as r,Typography as m}from"@material-ui/core";import t from"react";import{TrackHistoryChart as d}from"./TrackHistoryChart.esm.js";import{TrackLevelsChart as p}from"./TrackLevelsChart.esm.js";const f=o(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${e.typography.h5.fontSize}px`,cursor:"default"},header:{display:"flex",padding:e.spacing(1,1),borderBottom:`1px solid ${e.palette.divider}`,flexDirection:"column",gap:e.spacing(.5)},content:{padding:e.spacing(1,1,0),display:"flex",margin:e.spacing(1),gap:e.spacing(1)},leftSection:{width:"225px",minWidth:"225px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"}})),g=({track:e,status:c,history:s,isLoading:i,isError:n})=>{const a=f();return t.createElement(l,{className:a.card},t.createElement(r,{className:a.header},!i&&e&&t.createElement(m,{className:a.title},"Track Progress")),t.createElement(r,{className:a.content},t.createElement(r,{className:a.leftSection},t.createElement(r,{className:a.summaryCard},t.createElement(p,{data:c,isLoading:i}))),t.createElement(r,{className:a.chartSection},t.createElement(d,{track:e,data:s,isError:n}))))};export{g as TrackProgressCard};
|
|
2
2
|
//# sourceMappingURL=TrackProgressCard.esm.js.map
|