aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps
diff options
context:
space:
mode:
authorphilippe-perrin-sonarsource <philippe.perrin@sonarsource.com>2022-01-27 11:06:59 +0100
committersonartech <sonartech@sonarsource.com>2022-01-27 20:03:05 +0000
commitdca8354af94e9feb46ea2312857e000aaa232372 (patch)
tree336b645749ab1fb1b1abdac19a69c70257e98b68 /server/sonar-web/src/main/js/apps
parent85f744be340d8f404978341186dd77cc05584f31 (diff)
downloadsonarqube-dca8354af94e9feb46ea2312857e000aaa232372.tar.gz
sonarqube-dca8354af94e9feb46ea2312857e000aaa232372.zip
SONAR-15945 Get rid of T namespace in sonar-web
Diffstat (limited to 'server/sonar-web/src/main/js/apps')
-rw-r--r--server/sonar-web/src/main/js/apps/account/components/Account.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/account/components/Security.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/account/components/UserCard.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/account/notifications/GlobalNotifications.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/account/notifications/NotificationsList.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/account/notifications/ProjectModal.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/account/notifications/ProjectNotifications.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/account/notifications/Projects.tsx21
-rw-r--r--server/sonar-web/src/main/js/apps/account/notifications/SonarCloudNotifications.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/account/profile/Profile.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/account/profile/UserExternalIdentity.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/account/projects/Projects.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/account/projects/__tests__/ProjectCard-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/BackgroundTasksApp.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/StatPendingTime.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/components/Stats.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/code/__tests__/buckets-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/code/bucket.ts23
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/Breadcrumbs.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/CodeApp.tsx25
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/Component.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/ComponentPin.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/Components.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/Search.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/code/components/SourceViewerWrapper.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/code/utils.ts19
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx35
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx15
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/Facet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/FacetsList.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/InheritanceFacet.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/PageActions.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/ProfileFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RepositoryFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsParameters.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx22
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/TemplateFacet.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/PageActions-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetails-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsDescription-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsMeta-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/query.ts21
-rw-r--r--server/sonar-web/src/main/js/apps/coding-rules/routes.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/__tests__/utils-test.ts3
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/App.tsx22
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumb.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumbs.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/LeakPeriodLegend.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/MeasureContent.tsx43
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/MeasureHeader.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverview.tsx28
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverviewContainer.tsx20
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/MeasureViewSelect.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/__tests__/LeakPeriodLegend-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/config/complementary.ts4
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChart.tsx33
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentCell.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsList.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsListRow.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/FilesView.tsx25
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/MeasureCell.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/drilldown/TreeMapView.tsx17
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/sidebar/DomainFacet.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/sidebar/FacetMeasureValue.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/sidebar/Sidebar.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/component-measures/utils.ts44
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/AzureProjectCreate.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/AzureProjectCreateRenderer.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/AzureProjectsList.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/BitbucketCloudProjectCreate.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreate.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreateRenderer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreate.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreateRenderer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/GitlabProjectSelectionForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/documentation/__tests__/pages-test.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/documentation/components/App.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/documentation/components/SearchResultEntry.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/documentation/components/SearchResults.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/documentation/pages.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/App.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/DeleteForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/EditMembersModal.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/Form.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/List.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/groups/components/ListItem.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx19
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx65
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/IssuesSourceViewer.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/PageActions.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesApp-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssue.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueBox.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocations.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocationsNavigator.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssuesList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/CrossFileLocationsNavigator.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssueLocationsNavigator-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssuesList-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/CrossFileLocationsNavigator-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/ComponentSourceSnippetGroupViewer.tsx55
-rw-r--r--server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/CrossComponentSourceViewerWrapper.tsx25
-rw-r--r--server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/SnippetViewer.tsx47
-rw-r--r--server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/ComponentSourceSnippetGroupViewer-test.tsx19
-rw-r--r--server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/utils.ts43
-rw-r--r--server/sonar-web/src/main/js/apps/issues/redirects.ts3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/ScopeFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx21
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/utils.ts31
-rw-r--r--server/sonar-web/src/main/js/apps/marketplace/AppContainer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/marketplace/utils.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/ActivityPanel.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/Analysis.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/BranchOverview.tsx16
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/DebtValue.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/DrilldownMeasureValue.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/Event.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/FirstAnalysisNextStepsNotif.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/LeakPeriodInfo.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanel.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelIssueMeasureRow.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelNoNewCode.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/NoCodeWarning.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/ProjectLeakPeriodInfo.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanel.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanelSection.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/SecurityHotspotsReviewed.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-test.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/__tests__/Event-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/branches/__tests__/ProjectLeakPeriodInfo-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/App.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/IssueLabel.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/IssueRating.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/MeasurementLabel.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/QualityGateCondition.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/QualityGateConditions.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/SonarLintPromotion.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/__tests__/LeakPeriodLegend-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/pullRequests/AfterMergeEstimate.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/overview/pullRequests/LargeQualityGateBadge.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestOverview.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/App.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/Defaults.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/DeleteForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/Home.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/List.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/ListHeader.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/ListItem.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/NameCell.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/TemplateDetails.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/TemplateHeader.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/Defaults-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permission-templates/utils.ts13
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/global/components/AllHoldersList.tsx15
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/global/components/App.tsx21
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/project/components/AllHoldersList.tsx23
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/project/components/App.tsx17
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/project/components/ApplyTemplate.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/project/components/PageHeader.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/shared/components/GroupHolder.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/shared/components/HoldersList.tsx30
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionCell.tsx10
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/shared/components/UserHolder.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/permissions/utils.ts11
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/actions.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/DefinitionChangeEventInner.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/Event.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/EventInner.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/Events.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysesList.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysis.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityApp.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAppContainer.tsx21
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityGraphs.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageFooter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageHeader.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/RichQualityGateEventInner.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/forms/AddEventForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/forms/ChangeEventForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveAnalysisForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveEventForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectActivity/utils.ts11
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/App.tsx24
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingAnalysis.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingDays.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingPreviousVersion.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisListRenderer.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BranchBaselineSettingModal.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BranchList.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/BranchListRow.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/components/ProjectBaselineSelector.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/projectBaseline/utils.ts8
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeRow.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTable.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTabs.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/BranchPurgeSetting.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectDeletion/App.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectDeletion/Form.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectDeletion/Header.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectDump/ProjectDumpApp.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projectKey/Key.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectKey/UpdateForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectLinks/App.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projectLinks/LinkRow.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/projectLinks/Table.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateApp.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateAppRenderer.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesApp.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesAppRenderer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityProfiles/components/AddLanguageModal.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projectQualityProfiles/components/SetQualityProfileModal.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/ApplicationCreation.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/DefaultPageSelector.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/EmptyInstance.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/FavoriteFilter.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/PageHeader.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/ProjectCreationMenu.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/ProjectsList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCard.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardLanguages.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasures.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCard-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCardMeasures-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/MaintainabilityFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/NewLinesFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/NewMaintainabilityFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/NewReliabilityFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/NewSecurityFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/QualifierFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/ReliabilityFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/SecurityFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/SecurityReviewFilter.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/query.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/types.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/projects/utils.ts13
-rw-r--r--server/sonar-web/src/main/js/apps/projects/visualizations/Visualizations.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/App.tsx17
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/Header.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/App.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/Condition.tsx15
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/ConditionModal.tsx19
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/ConditionOperator.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/Conditions.tsx25
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/Details.tsx17
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/DetailsContent.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/DetailsHeader.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/List.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/MetricSelect.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/PermissionItem.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/Projects.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissions.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModal.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModalRenderer.tsx9
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsRenderer.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/components/ThresholdInput.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-gates/utils.ts21
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/changelog/ChangesList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultActivation.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/components/App.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritance.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritanceBox.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissions.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsUser.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRules.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/home/EvolutionRules.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/home/ProfilesList.tsx8
-rw-r--r--server/sonar-web/src/main/js/apps/quality-profiles/types.ts3
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsApp.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsAppRenderer.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/__tests__/utils-test.ts3
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/FilterBar.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotList.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotReviewHistoryAndComments.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainer.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainerRenderer.tsx14
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewer.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewerRenderer.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/Assignee.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeRenderer.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelection.tsx13
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelectionRenderer.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/Assignee-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeRenderer-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelection-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelectionRenderer-test.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/components/status/Status.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/security-hotspots/utils.ts16
-rw-r--r--server/sonar-web/src/main/js/apps/sessions/components/Login.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/sessions/components/LoginContainer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/sessions/components/OAuthProviders.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/AdditionalCategories.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/AllCategoriesList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/CategoryDefinitionsList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/CategoryOverrides.ts3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/Definition.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/DefinitionsList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/EmailForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/NewCodePeriod.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/PageHeader.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/SettingsApp.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/SettingsSearch.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/SettingsSearchRenderer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/SubCategoryDefinitionsList.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegration.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegrationRenderer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTab.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTabRenderer.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/almIntegration/CreationTooltip.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx11
-rw-r--r--server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/settings/store/definitions.ts3
-rw-r--r--server/sonar-web/src/main/js/apps/settings/store/settingsPage.ts7
-rw-r--r--server/sonar-web/src/main/js/apps/settings/store/values.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/settings/utils.ts7
-rw-r--r--server/sonar-web/src/main/js/apps/system/__tests__/utils-test.ts7
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/App.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/ClusterSysInfos.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/StandaloneSysInfos.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/info-items/HealthCard.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/info-items/HealthCauseItem.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/info-items/HealthItem.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/info-items/Section.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/system/components/info-items/SysInfoItem.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/system/utils.ts75
-rw-r--r--server/sonar-web/src/main/js/apps/tutorials/components/TutorialsApp.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/users/UsersApp.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/users/UsersList.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/DeactivateForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/GroupsForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/PasswordForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/TokensFormItem.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/TokensFormModal.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/UserActions.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/UserForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/UserGroups.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/UserListItem.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/UserListItemIdentity.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/__tests__/TokensFormItem-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/components/__tests__/UserListItem-test.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/users/utils.ts5
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/Action.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/ActionChangelog.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/Domain.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/Menu.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/Params.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/ResponseExample.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/__tests__/Menu-test.tsx19
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/components/__tests__/Params-test.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/web-api/utils.ts7
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/App.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/CreateWebhookForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/DeleteWebhookForm.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/DeliveriesForm.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/DeliveryAccordion.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/DeliveryItem.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/LatestDeliveryForm.tsx5
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/WebhookActions.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/WebhookItem.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/WebhookItemLatestDelivery.tsx3
-rw-r--r--server/sonar-web/src/main/js/apps/webhooks/components/WebhooksList.tsx3
443 files changed, 1858 insertions, 1286 deletions
diff --git a/server/sonar-web/src/main/js/apps/account/components/Account.tsx b/server/sonar-web/src/main/js/apps/account/components/Account.tsx
index 2a8bd25fc0a..4aa0dfe8817 100644
--- a/server/sonar-web/src/main/js/apps/account/components/Account.tsx
+++ b/server/sonar-web/src/main/js/apps/account/components/Account.tsx
@@ -24,12 +24,13 @@ import Suggestions from '../../../app/components/embed-docs-modal/Suggestions';
import { withCurrentUser } from '../../../components/hoc/withCurrentUser';
import handleRequiredAuthentication from '../../../helpers/handleRequiredAuthentication';
import { translate } from '../../../helpers/l10n';
+import { CurrentUser, LoggedInUser } from '../../../types/types';
import '../account.css';
import Nav from './Nav';
import UserCard from './UserCard';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
}
export class Account extends React.PureComponent<Props> {
@@ -54,7 +55,7 @@ export class Account extends React.PureComponent<Props> {
<A11ySkipTarget anchor="account_main" />
<header className="account-header">
<div className="account-container clearfix">
- <UserCard user={currentUser as T.LoggedInUser} />
+ <UserCard user={currentUser as LoggedInUser} />
<Nav />
</div>
</header>
diff --git a/server/sonar-web/src/main/js/apps/account/components/Security.tsx b/server/sonar-web/src/main/js/apps/account/components/Security.tsx
index 18a387913d0..9e99cde6276 100644
--- a/server/sonar-web/src/main/js/apps/account/components/Security.tsx
+++ b/server/sonar-web/src/main/js/apps/account/components/Security.tsx
@@ -23,10 +23,11 @@ import { connect } from 'react-redux';
import ResetPasswordForm from '../../../components/common/ResetPasswordForm';
import { translate } from '../../../helpers/l10n';
import { getCurrentUser, Store } from '../../../store/rootReducer';
+import { LoggedInUser } from '../../../types/types';
import Tokens from './Tokens';
export interface SecurityProps {
- user: T.LoggedInUser;
+ user: LoggedInUser;
}
export function Security({ user }: SecurityProps) {
@@ -45,7 +46,7 @@ export function Security({ user }: SecurityProps) {
}
const mapStateToProps = (state: Store) => ({
- user: getCurrentUser(state) as T.LoggedInUser
+ user: getCurrentUser(state) as LoggedInUser
});
export default connect(mapStateToProps)(Security);
diff --git a/server/sonar-web/src/main/js/apps/account/components/UserCard.tsx b/server/sonar-web/src/main/js/apps/account/components/UserCard.tsx
index 2ce11f14604..ba323e5a5a7 100644
--- a/server/sonar-web/src/main/js/apps/account/components/UserCard.tsx
+++ b/server/sonar-web/src/main/js/apps/account/components/UserCard.tsx
@@ -19,9 +19,10 @@
*/
import * as React from 'react';
import Avatar from '../../../components/ui/Avatar';
+import { LoggedInUser } from '../../../types/types';
interface Props {
- user: T.LoggedInUser;
+ user: LoggedInUser;
}
export default function UserCard({ user }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/account/notifications/GlobalNotifications.tsx b/server/sonar-web/src/main/js/apps/account/notifications/GlobalNotifications.tsx
index 22258c60a21..5d645cba39f 100644
--- a/server/sonar-web/src/main/js/apps/account/notifications/GlobalNotifications.tsx
+++ b/server/sonar-web/src/main/js/apps/account/notifications/GlobalNotifications.tsx
@@ -20,14 +20,15 @@
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { isSonarCloud } from '../../../helpers/system';
+import { Notification } from '../../../types/types';
import NotificationsList from './NotificationsList';
import SonarCloudNotifications from './SonarCloudNotifications';
interface Props {
- addNotification: (n: T.Notification) => void;
+ addNotification: (n: Notification) => void;
channels: string[];
- notifications: T.Notification[];
- removeNotification: (n: T.Notification) => void;
+ notifications: Notification[];
+ removeNotification: (n: Notification) => void;
types: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/account/notifications/NotificationsList.tsx b/server/sonar-web/src/main/js/apps/account/notifications/NotificationsList.tsx
index 1dce17fd8b7..2500318d883 100644
--- a/server/sonar-web/src/main/js/apps/account/notifications/NotificationsList.tsx
+++ b/server/sonar-web/src/main/js/apps/account/notifications/NotificationsList.tsx
@@ -20,15 +20,16 @@
import * as React from 'react';
import Checkbox from '../../../components/controls/Checkbox';
import { hasMessage, translate } from '../../../helpers/l10n';
+import { Notification } from '../../../types/types';
interface Props {
- onAdd: (n: T.Notification) => void;
- onRemove: (n: T.Notification) => void;
+ onAdd: (n: Notification) => void;
+ onRemove: (n: Notification) => void;
channels: string[];
checkboxId: (type: string, channel: string) => string;
project?: boolean;
types: string[];
- notifications: T.Notification[];
+ notifications: Notification[];
}
export default class NotificationsList extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/account/notifications/ProjectModal.tsx b/server/sonar-web/src/main/js/apps/account/notifications/ProjectModal.tsx
index b83d7555ff6..47cf7d8f287 100644
--- a/server/sonar-web/src/main/js/apps/account/notifications/ProjectModal.tsx
+++ b/server/sonar-web/src/main/js/apps/account/notifications/ProjectModal.tsx
@@ -27,20 +27,21 @@ import SearchBox from '../../../components/controls/SearchBox';
import SimpleModal from '../../../components/controls/SimpleModal';
import { KeyboardCodes } from '../../../helpers/keycodes';
import { translate } from '../../../helpers/l10n';
+import { NotificationProject } from '../../../types/types';
interface Props {
- addedProjects: T.NotificationProject[];
+ addedProjects: NotificationProject[];
closeModal: VoidFunction;
- onSubmit: (project: T.NotificationProject) => void;
+ onSubmit: (project: NotificationProject) => void;
}
interface State {
- highlighted?: T.NotificationProject;
+ highlighted?: NotificationProject;
loading?: boolean;
query?: string;
open?: boolean;
- selectedProject?: T.NotificationProject;
- suggestions?: T.NotificationProject[];
+ selectedProject?: NotificationProject;
+ suggestions?: NotificationProject[];
}
export default class ProjectModal extends React.PureComponent<Props, State> {
@@ -151,7 +152,7 @@ export default class ProjectModal extends React.PureComponent<Props, State> {
);
};
- handleSelect = (selectedProject: T.NotificationProject) => {
+ handleSelect = (selectedProject: NotificationProject) => {
this.setState({
open: false,
query: selectedProject.projectName,
diff --git a/server/sonar-web/src/main/js/apps/account/notifications/ProjectNotifications.tsx b/server/sonar-web/src/main/js/apps/account/notifications/ProjectNotifications.tsx
index 3e749bda992..7219a9ad0a0 100644
--- a/server/sonar-web/src/main/js/apps/account/notifications/ProjectNotifications.tsx
+++ b/server/sonar-web/src/main/js/apps/account/notifications/ProjectNotifications.tsx
@@ -20,15 +20,16 @@
import * as React from 'react';
import BoxedGroupAccordion from '../../../components/controls/BoxedGroupAccordion';
import { translate } from '../../../helpers/l10n';
+import { Notification, NotificationProject } from '../../../types/types';
import NotificationsList from './NotificationsList';
interface Props {
- addNotification: (n: T.Notification) => void;
+ addNotification: (n: Notification) => void;
channels: string[];
collapsed: boolean;
- notifications: T.Notification[];
- project: T.NotificationProject;
- removeNotification: (n: T.Notification) => void;
+ notifications: Notification[];
+ project: NotificationProject;
+ removeNotification: (n: Notification) => void;
types: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/account/notifications/Projects.tsx b/server/sonar-web/src/main/js/apps/account/notifications/Projects.tsx
index cd3e69acd19..b828d965687 100644
--- a/server/sonar-web/src/main/js/apps/account/notifications/Projects.tsx
+++ b/server/sonar-web/src/main/js/apps/account/notifications/Projects.tsx
@@ -22,21 +22,22 @@ import * as React from 'react';
import { Button } from '../../../components/controls/buttons';
import SearchBox from '../../../components/controls/SearchBox';
import { translate } from '../../../helpers/l10n';
+import { Notification, NotificationProject } from '../../../types/types';
import ProjectModal from './ProjectModal';
import ProjectNotifications from './ProjectNotifications';
export interface Props {
- addNotification: (n: T.Notification) => void;
+ addNotification: (n: Notification) => void;
channels: string[];
- notifications: T.Notification[];
- removeNotification: (n: T.Notification) => void;
+ notifications: Notification[];
+ removeNotification: (n: Notification) => void;
types: string[];
}
const THRESHOLD_COLLAPSED = 3;
interface State {
- addedProjects: T.NotificationProject[];
+ addedProjects: NotificationProject[];
search: string;
showModal: boolean;
}
@@ -44,7 +45,7 @@ interface State {
function isNotificationProject(project: {
project?: string;
projectName?: string;
-}): project is T.NotificationProject {
+}): project is NotificationProject {
return project.project !== undefined && project.projectName !== undefined;
}
@@ -55,11 +56,11 @@ export default class Projects extends React.PureComponent<Props, State> {
showModal: false
};
- filterSearch = (project: T.NotificationProject, search: string) => {
+ filterSearch = (project: NotificationProject, search: string) => {
return project.projectName && project.projectName.toLowerCase().includes(search);
};
- handleAddProject = (project: T.NotificationProject) => {
+ handleAddProject = (project: NotificationProject) => {
this.setState(state => {
return {
addedProjects: [...state.addedProjects, project]
@@ -71,7 +72,7 @@ export default class Projects extends React.PureComponent<Props, State> {
this.setState({ search: search.toLowerCase() });
};
- handleSubmit = (selectedProject: T.NotificationProject) => {
+ handleSubmit = (selectedProject: NotificationProject) => {
if (selectedProject) {
this.handleAddProject(selectedProject);
}
@@ -87,7 +88,7 @@ export default class Projects extends React.PureComponent<Props, State> {
this.setState({ showModal: true });
};
- removeNotification = (removed: T.Notification, allProjects: T.NotificationProject[]) => {
+ removeNotification = (removed: Notification, allProjects: NotificationProject[]) => {
const projectToRemove = allProjects.find(p => p.project === removed.project);
if (projectToRemove) {
this.handleAddProject(projectToRemove);
@@ -102,7 +103,7 @@ export default class Projects extends React.PureComponent<Props, State> {
const projects = uniqBy(notifications, project => project.project).filter(
isNotificationProject
- ) as T.NotificationProject[];
+ ) as NotificationProject[];
const notificationsByProject = groupBy(notifications, n => n.project);
const allProjects = uniqBy([...addedProjects, ...projects], project => project.project);
const filteredProjects = sortBy(allProjects, 'projectName').filter(p =>
diff --git a/server/sonar-web/src/main/js/apps/account/notifications/SonarCloudNotifications.tsx b/server/sonar-web/src/main/js/apps/account/notifications/SonarCloudNotifications.tsx
index d74356148e9..6ab6be7fb76 100644
--- a/server/sonar-web/src/main/js/apps/account/notifications/SonarCloudNotifications.tsx
+++ b/server/sonar-web/src/main/js/apps/account/notifications/SonarCloudNotifications.tsx
@@ -23,10 +23,11 @@ import Checkbox from '../../../components/controls/Checkbox';
import { translate } from '../../../helpers/l10n';
import { getCurrentUserSetting, Store } from '../../../store/rootReducer';
import { setCurrentUserSetting } from '../../../store/users';
+import { CurrentUserSetting } from '../../../types/types';
interface Props {
notificationsOptOut?: boolean;
- setCurrentUserSetting: (setting: T.CurrentUserSetting) => void;
+ setCurrentUserSetting: (setting: CurrentUserSetting) => void;
}
export class SonarCloudNotifications extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/account/profile/Profile.tsx b/server/sonar-web/src/main/js/apps/account/profile/Profile.tsx
index 7eaa6093c49..601b32bf885 100644
--- a/server/sonar-web/src/main/js/apps/account/profile/Profile.tsx
+++ b/server/sonar-web/src/main/js/apps/account/profile/Profile.tsx
@@ -21,10 +21,11 @@ import * as React from 'react';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import { whenLoggedIn } from '../../../components/hoc/whenLoggedIn';
import { translate } from '../../../helpers/l10n';
+import { LoggedInUser } from '../../../types/types';
import UserExternalIdentity from './UserExternalIdentity';
export interface ProfileProps {
- currentUser: T.LoggedInUser;
+ currentUser: LoggedInUser;
}
export function Profile({ currentUser }: ProfileProps) {
diff --git a/server/sonar-web/src/main/js/apps/account/profile/UserExternalIdentity.tsx b/server/sonar-web/src/main/js/apps/account/profile/UserExternalIdentity.tsx
index 096ec5c4382..21fb7d25f62 100644
--- a/server/sonar-web/src/main/js/apps/account/profile/UserExternalIdentity.tsx
+++ b/server/sonar-web/src/main/js/apps/account/profile/UserExternalIdentity.tsx
@@ -22,13 +22,14 @@ import { getIdentityProviders } from '../../../api/users';
import { colors } from '../../../app/theme';
import { getTextColor } from '../../../helpers/colors';
import { getBaseUrl } from '../../../helpers/system';
+import { IdentityProvider, LoggedInUser } from '../../../types/types';
export interface UserExternalIdentityProps {
- user: T.LoggedInUser;
+ user: LoggedInUser;
}
interface State {
- identityProvider?: T.IdentityProvider;
+ identityProvider?: IdentityProvider;
loading: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx b/server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx
index 36bc2a46a6e..ac1e98d6f30 100644
--- a/server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx
+++ b/server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx
@@ -26,15 +26,16 @@ import Level from '../../../components/ui/Level';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { orderLinks } from '../../../helpers/projectLinks';
import { getProjectUrl } from '../../../helpers/urls';
+import { MyProject, ProjectLink } from '../../../types/types';
interface Props {
- project: T.MyProject;
+ project: MyProject;
}
export default function ProjectCard({ project }: Props) {
const { links } = project;
- const orderedLinks: T.ProjectLink[] = orderLinks(
+ const orderedLinks: ProjectLink[] = orderLinks(
links.map((link, i) => {
const { href, name, type } = link;
return {
diff --git a/server/sonar-web/src/main/js/apps/account/projects/Projects.tsx b/server/sonar-web/src/main/js/apps/account/projects/Projects.tsx
index 8ec4500ade3..1057e0d7602 100644
--- a/server/sonar-web/src/main/js/apps/account/projects/Projects.tsx
+++ b/server/sonar-web/src/main/js/apps/account/projects/Projects.tsx
@@ -20,12 +20,13 @@
import * as React from 'react';
import ListFooter from '../../../components/controls/ListFooter';
import { translate } from '../../../helpers/l10n';
+import { MyProject } from '../../../types/types';
import ProjectCard from './ProjectCard';
interface Props {
loading: boolean;
loadMore: () => void;
- projects: T.MyProject[];
+ projects: MyProject[];
total?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx b/server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx
index 3c737a10da0..094ee4ff83e 100644
--- a/server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/account/projects/ProjectsContainer.tsx
@@ -21,12 +21,13 @@ import * as React from 'react';
import { Helmet } from 'react-helmet-async';
import { getMyProjects } from '../../../api/components';
import { translate } from '../../../helpers/l10n';
+import { MyProject } from '../../../types/types';
import Projects from './Projects';
interface State {
loading: boolean;
page: number;
- projects?: T.MyProject[];
+ projects?: MyProject[];
total?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/account/projects/__tests__/ProjectCard-test.tsx b/server/sonar-web/src/main/js/apps/account/projects/__tests__/ProjectCard-test.tsx
index 3d657320d67..3644f570232 100644
--- a/server/sonar-web/src/main/js/apps/account/projects/__tests__/ProjectCard-test.tsx
+++ b/server/sonar-web/src/main/js/apps/account/projects/__tests__/ProjectCard-test.tsx
@@ -19,6 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { MyProject } from '../../../../types/types';
import ProjectCard from '../ProjectCard';
it('should render key and name', () => {
@@ -73,6 +74,6 @@ it('should render links', () => {
expect(wrapper.find('MetaLink').length).toBe(1);
});
-function shallowRender(project: Partial<T.MyProject> = {}) {
+function shallowRender(project: Partial<MyProject> = {}) {
return shallow(<ProjectCard project={{ key: 'key', links: [], name: 'name', ...project }} />);
}
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/BackgroundTasksApp.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/BackgroundTasksApp.tsx
index 3c77ed5c9d0..78cc9486699 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/BackgroundTasksApp.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/BackgroundTasksApp.tsx
@@ -33,6 +33,7 @@ import { toShortNotSoISOString } from '../../../helpers/dates';
import { translate } from '../../../helpers/l10n';
import { parseAsDate } from '../../../helpers/query';
import { Task, TaskStatuses } from '../../../types/tasks';
+import { Component } from '../../../types/types';
import '../background-tasks.css';
import { CURRENTS, DEBOUNCE_DELAY, DEFAULT_FILTERS } from '../constants';
import { mapFiltersToParameters, Query, updateTask } from '../utils';
@@ -43,7 +44,7 @@ import Stats from './Stats';
import Tasks from './Tasks';
interface Props {
- component?: Pick<T.Component, 'key'> & { id: string }; // id should be removed when api/ce/activity accept a component key instead of an id
+ component?: Pick<Component, 'key'> & { id: string }; // id should be removed when api/ce/activity accept a component key instead of an id
location: Location;
router: Pick<Router, 'push'>;
}
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/StatPendingTime.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/StatPendingTime.tsx
index 23d0b3b3294..1eecb6f7a5d 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/StatPendingTime.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/StatPendingTime.tsx
@@ -21,13 +21,14 @@ import * as React from 'react';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import { translate } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
+import { Component } from '../../../types/types';
// Do not display the pending time for values smaller than this threshold (in ms)
const MIN_PENDING_TIME_THRESHOLD = 1000;
export interface Props {
className?: string;
- component?: Pick<T.Component, 'key'>;
+ component?: Pick<Component, 'key'>;
pendingCount?: number;
pendingTime?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/components/Stats.tsx b/server/sonar-web/src/main/js/apps/background-tasks/components/Stats.tsx
index afa78ecd9a1..92d4eeaa9c1 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/components/Stats.tsx
+++ b/server/sonar-web/src/main/js/apps/background-tasks/components/Stats.tsx
@@ -18,12 +18,13 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { Component } from '../../../types/types';
import StatPendingCount from './StatPendingCount';
import StatPendingTime from './StatPendingTime';
import StatStillFailing from './StatStillFailing';
export interface Props {
- component?: Pick<T.Component, 'key'>;
+ component?: Pick<Component, 'key'>;
failingCount?: number;
onCancelAllPending: () => void;
onShowFailing: () => void;
diff --git a/server/sonar-web/src/main/js/apps/code/__tests__/buckets-test.tsx b/server/sonar-web/src/main/js/apps/code/__tests__/buckets-test.tsx
index f72e9d0a9b0..65e6a09fc8d 100644
--- a/server/sonar-web/src/main/js/apps/code/__tests__/buckets-test.tsx
+++ b/server/sonar-web/src/main/js/apps/code/__tests__/buckets-test.tsx
@@ -17,16 +17,17 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+import { ComponentMeasure } from '../../../types/types';
import { addComponent, addComponentChildren, getComponent, getComponentChildren } from '../bucket';
-const component: T.ComponentMeasure = { key: 'frodo', name: 'frodo', qualifier: 'frodo' };
+const component: ComponentMeasure = { key: 'frodo', name: 'frodo', qualifier: 'frodo' };
const componentKey: string = 'foo';
-const childrenA: T.ComponentMeasure[] = [
+const childrenA: ComponentMeasure[] = [
{ key: 'foo', name: 'foo', qualifier: 'foo' },
{ key: 'bar', name: 'bar', qualifier: 'bar' }
];
-const childrenB: T.ComponentMeasure[] = [
+const childrenB: ComponentMeasure[] = [
{ key: 'bart', name: 'bart', qualifier: 'bart' },
{ key: 'simpson', name: 'simpson', qualifier: 'simpson' }
];
diff --git a/server/sonar-web/src/main/js/apps/code/bucket.ts b/server/sonar-web/src/main/js/apps/code/bucket.ts
index 9c385131cf4..d6f6945ac8f 100644
--- a/server/sonar-web/src/main/js/apps/code/bucket.ts
+++ b/server/sonar-web/src/main/js/apps/code/bucket.ts
@@ -17,25 +17,28 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-let bucket: T.Dict<T.ComponentMeasure> = {};
-let childrenBucket: T.Dict<{
- children: T.ComponentMeasure[];
+
+import { Breadcrumb, ComponentMeasure, Dict } from '../../types/types';
+
+let bucket: Dict<ComponentMeasure> = {};
+let childrenBucket: Dict<{
+ children: ComponentMeasure[];
page: number;
total: number;
}> = {};
-let breadcrumbsBucket: T.Dict<T.Breadcrumb[]> = {};
+let breadcrumbsBucket: Dict<Breadcrumb[]> = {};
-export function addComponent(component: T.ComponentMeasure): void {
+export function addComponent(component: ComponentMeasure): void {
bucket[component.key] = component;
}
-export function getComponent(componentKey: string): T.ComponentMeasure {
+export function getComponent(componentKey: string): ComponentMeasure {
return bucket[componentKey];
}
export function addComponentChildren(
componentKey: string,
- children: T.ComponentMeasure[],
+ children: ComponentMeasure[],
total: number,
page: number
): void {
@@ -49,18 +52,18 @@ export function addComponentChildren(
export function getComponentChildren(
componentKey: string
): {
- children: T.ComponentMeasure[];
+ children: ComponentMeasure[];
page: number;
total: number;
} {
return childrenBucket[componentKey];
}
-export function addComponentBreadcrumbs(componentKey: string, breadcrumbs: T.Breadcrumb[]): void {
+export function addComponentBreadcrumbs(componentKey: string, breadcrumbs: Breadcrumb[]): void {
breadcrumbsBucket[componentKey] = breadcrumbs;
}
-export function getComponentBreadcrumbs(componentKey: string): T.Breadcrumb[] {
+export function getComponentBreadcrumbs(componentKey: string): Breadcrumb[] {
return breadcrumbsBucket[componentKey];
}
diff --git a/server/sonar-web/src/main/js/apps/code/components/Breadcrumbs.tsx b/server/sonar-web/src/main/js/apps/code/components/Breadcrumbs.tsx
index 782af6e1793..59fa5120973 100644
--- a/server/sonar-web/src/main/js/apps/code/components/Breadcrumbs.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/Breadcrumbs.tsx
@@ -19,12 +19,13 @@
*/
import * as React from 'react';
import { BranchLike } from '../../../types/branch-like';
+import { Breadcrumb, ComponentMeasure } from '../../../types/types';
import ComponentName from './ComponentName';
interface Props {
branchLike?: BranchLike;
- breadcrumbs: T.Breadcrumb[];
- rootComponent: T.ComponentMeasure;
+ breadcrumbs: Breadcrumb[];
+ rootComponent: ComponentMeasure;
}
export default function Breadcrumbs({ branchLike, breadcrumbs, rootComponent }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/code/components/CodeApp.tsx b/server/sonar-web/src/main/js/apps/code/components/CodeApp.tsx
index 9ad1391425d..a66a95fc915 100644
--- a/server/sonar-web/src/main/js/apps/code/components/CodeApp.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/CodeApp.tsx
@@ -37,6 +37,7 @@ import { fetchBranchStatus, fetchMetrics } from '../../../store/rootActions';
import { getMetrics } from '../../../store/rootReducer';
import { BranchLike } from '../../../types/branch-like';
import { isPortfolioLike } from '../../../types/component';
+import { Breadcrumb, Component, ComponentMeasure, Dict, Issue, Metric } from '../../../types/types';
import { addComponent, addComponentBreadcrumbs, clearBucket } from '../bucket';
import '../code.css';
import {
@@ -51,7 +52,7 @@ import Search from './Search';
import SourceViewerWrapper from './SourceViewerWrapper';
interface StateToProps {
- metrics: T.Dict<T.Metric>;
+ metrics: Dict<Metric>;
}
interface DispatchToProps {
@@ -61,7 +62,7 @@ interface DispatchToProps {
interface OwnProps {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
location: Pick<Location, 'query'>;
router: Pick<InjectedRouter, 'push'>;
}
@@ -69,14 +70,14 @@ interface OwnProps {
type Props = StateToProps & DispatchToProps & OwnProps;
interface State {
- baseComponent?: T.ComponentMeasure;
- breadcrumbs: T.Breadcrumb[];
- components?: T.ComponentMeasure[];
- highlighted?: T.ComponentMeasure;
+ baseComponent?: ComponentMeasure;
+ breadcrumbs: Breadcrumb[];
+ components?: ComponentMeasure[];
+ highlighted?: ComponentMeasure;
loading: boolean;
page: number;
- searchResults?: T.ComponentMeasure[];
- sourceViewer?: T.ComponentMeasure;
+ searchResults?: ComponentMeasure[];
+ sourceViewer?: ComponentMeasure;
total: number;
newCodeSelected: boolean;
}
@@ -208,11 +209,11 @@ export class CodeApp extends React.Component<Props, State> {
}
};
- handleHighlight = (highlighted: T.ComponentMeasure) => {
+ handleHighlight = (highlighted: ComponentMeasure) => {
this.setState({ highlighted });
};
- handleIssueChange = (_: T.Issue) => {
+ handleIssueChange = (_: Issue) => {
this.refreshBranchStatus();
};
@@ -220,11 +221,11 @@ export class CodeApp extends React.Component<Props, State> {
this.setState({ searchResults: undefined });
};
- handleSearchResults = (searchResults: T.ComponentMeasure[] = []) => {
+ handleSearchResults = (searchResults: ComponentMeasure[] = []) => {
this.setState({ searchResults });
};
- handleSelect = (component: T.ComponentMeasure) => {
+ handleSelect = (component: ComponentMeasure) => {
const { branchLike, component: rootComponent } = this.props;
if (component.refKey) {
diff --git a/server/sonar-web/src/main/js/apps/code/components/Component.tsx b/server/sonar-web/src/main/js/apps/code/components/Component.tsx
index 61e9f2d02a9..24361a70a49 100644
--- a/server/sonar-web/src/main/js/apps/code/components/Component.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/Component.tsx
@@ -24,6 +24,7 @@ import { WorkspaceContext } from '../../../components/workspace/context';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { MetricType } from '../../../types/metrics';
+import { ComponentMeasure as TypeComponentMeasure, Metric } from '../../../types/types';
import ComponentMeasure from './ComponentMeasure';
import ComponentName from './ComponentName';
import ComponentPin from './ComponentPin';
@@ -32,12 +33,12 @@ interface Props {
branchLike?: BranchLike;
canBePinned?: boolean;
canBrowse?: boolean;
- component: T.ComponentMeasure;
+ component: TypeComponentMeasure;
hasBaseComponent: boolean;
isBaseComponent?: boolean;
- metrics: T.Metric[];
- previous?: T.ComponentMeasure;
- rootComponent: T.ComponentMeasure;
+ metrics: Metric[];
+ previous?: TypeComponentMeasure;
+ rootComponent: TypeComponentMeasure;
selected?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.tsx b/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.tsx
index 0b68c399fd8..bc41026f1f9 100644
--- a/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.tsx
@@ -21,10 +21,11 @@ import * as React from 'react';
import Measure from '../../../components/measure/Measure';
import { getLeakValue } from '../../../components/measure/utils';
import { isDiffMetric } from '../../../helpers/measures';
+import { ComponentMeasure as TypeComponentMeasure, Metric } from '../../../types/types';
interface Props {
- component: T.ComponentMeasure;
- metric: T.Metric;
+ component: TypeComponentMeasure;
+ metric: Metric;
}
export default class ComponentMeasure extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx b/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
index cd67da0d00e..3dc3d132c71 100644
--- a/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
@@ -32,8 +32,9 @@ import {
isPortfolioLike,
isProject
} from '../../../types/component';
+import { ComponentMeasure } from '../../../types/types';
-export function getTooltip(component: T.ComponentMeasure) {
+export function getTooltip(component: ComponentMeasure) {
const isFile = component.qualifier === 'FIL' || component.qualifier === 'UTS';
if (isFile && component.path) {
@@ -61,9 +62,9 @@ export function mostCommonPrefix(strings: string[]) {
export interface Props {
branchLike?: BranchLike;
canBrowse?: boolean;
- component: T.ComponentMeasure;
- previous?: T.ComponentMeasure;
- rootComponent: T.ComponentMeasure;
+ component: ComponentMeasure;
+ previous?: ComponentMeasure;
+ rootComponent: ComponentMeasure;
unclickable?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentPin.tsx b/server/sonar-web/src/main/js/apps/code/components/ComponentPin.tsx
index 34ac5a6e654..cd77ea623f6 100644
--- a/server/sonar-web/src/main/js/apps/code/components/ComponentPin.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/ComponentPin.tsx
@@ -22,10 +22,11 @@ import PinIcon from '../../../components/icons/PinIcon';
import { WorkspaceContextShape } from '../../../components/workspace/context';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { ComponentMeasure } from '../../../types/types';
interface Props {
branchLike?: BranchLike;
- component: T.ComponentMeasure;
+ component: ComponentMeasure;
openComponent: WorkspaceContextShape['openComponent'];
}
diff --git a/server/sonar-web/src/main/js/apps/code/components/Components.tsx b/server/sonar-web/src/main/js/apps/code/components/Components.tsx
index 0946b2275b9..449a4020f22 100644
--- a/server/sonar-web/src/main/js/apps/code/components/Components.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/Components.tsx
@@ -22,17 +22,18 @@ import * as React from 'react';
import withKeyboardNavigation from '../../../components/hoc/withKeyboardNavigation';
import { getComponentMeasureUniqueKey } from '../../../helpers/component';
import { BranchLike } from '../../../types/branch-like';
+import { ComponentMeasure, Metric } from '../../../types/types';
import Component from './Component';
import ComponentsEmpty from './ComponentsEmpty';
import ComponentsHeader from './ComponentsHeader';
interface Props {
- baseComponent?: T.ComponentMeasure;
+ baseComponent?: ComponentMeasure;
branchLike?: BranchLike;
- components: T.ComponentMeasure[];
- metrics: T.Metric[];
- rootComponent: T.ComponentMeasure;
- selected?: T.ComponentMeasure;
+ components: ComponentMeasure[];
+ metrics: Metric[];
+ rootComponent: ComponentMeasure;
+ selected?: ComponentMeasure;
}
const BASE_COLUMN_COUNT = 4;
diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.tsx b/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.tsx
index f458cc98484..8c9067457a7 100644
--- a/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.tsx
@@ -20,12 +20,13 @@
import classNames from 'classnames';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { ComponentMeasure } from '../../../types/types';
interface Props {
- baseComponent?: T.ComponentMeasure;
+ baseComponent?: ComponentMeasure;
canBePinned?: boolean;
metrics: string[];
- rootComponent: T.ComponentMeasure;
+ rootComponent: ComponentMeasure;
}
const SHORT_NAME_METRICS = [
diff --git a/server/sonar-web/src/main/js/apps/code/components/Search.tsx b/server/sonar-web/src/main/js/apps/code/components/Search.tsx
index 740504eabd9..ce9b0da5407 100644
--- a/server/sonar-web/src/main/js/apps/code/components/Search.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/Search.tsx
@@ -27,16 +27,17 @@ import { getBranchLikeQuery } from '../../../helpers/branch-like';
import { KeyboardCodes } from '../../../helpers/keycodes';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { ComponentMeasure } from '../../../types/types';
import PortfolioNewCodeToggle from './PortfolioNewCodeToggle';
interface Props {
branchLike?: BranchLike;
- component: T.ComponentMeasure;
+ component: ComponentMeasure;
location: Location;
newCodeSelected: boolean;
onSearchClear: () => void;
onNewCodeToggle: (newCode: boolean) => void;
- onSearchResults: (results?: T.ComponentMeasure[]) => void;
+ onSearchResults: (results?: ComponentMeasure[]) => void;
router: Router;
}
diff --git a/server/sonar-web/src/main/js/apps/code/components/SourceViewerWrapper.tsx b/server/sonar-web/src/main/js/apps/code/components/SourceViewerWrapper.tsx
index 874c5b3379f..73fb535bf69 100644
--- a/server/sonar-web/src/main/js/apps/code/components/SourceViewerWrapper.tsx
+++ b/server/sonar-web/src/main/js/apps/code/components/SourceViewerWrapper.tsx
@@ -23,13 +23,14 @@ import withKeyboardNavigation from '../../../components/hoc/withKeyboardNavigati
import SourceViewer from '../../../components/SourceViewer/SourceViewer';
import { scrollToElement } from '../../../helpers/scrolling';
import { BranchLike } from '../../../types/branch-like';
+import { Issue, Measure } from '../../../types/types';
interface Props {
branchLike?: BranchLike;
component: string;
- componentMeasures: T.Measure[] | undefined;
+ componentMeasures: Measure[] | undefined;
location: Pick<Location, 'query'>;
- onIssueChange?: (issue: T.Issue) => void;
+ onIssueChange?: (issue: Issue) => void;
}
export class SourceViewerWrapper extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/code/utils.ts b/server/sonar-web/src/main/js/apps/code/utils.ts
index 3f957269065..99e094128a1 100644
--- a/server/sonar-web/src/main/js/apps/code/utils.ts
+++ b/server/sonar-web/src/main/js/apps/code/utils.ts
@@ -22,6 +22,7 @@ import { getBranchLikeQuery, isPullRequest } from '../../helpers/branch-like';
import { BranchLike } from '../../types/branch-like';
import { isPortfolioLike } from '../../types/component';
import { MetricKey } from '../../types/metrics';
+import { Breadcrumb, ComponentMeasure } from '../../types/types';
import {
addComponent,
addComponentBreadcrumbs,
@@ -74,7 +75,7 @@ const LEAK_METRICS = [
const PAGE_SIZE = 100;
interface Children {
- components: T.ComponentMeasure[];
+ components: ComponentMeasure[];
page: number;
total: number;
}
@@ -91,17 +92,17 @@ export function showLeakMeasure(branchLike?: BranchLike) {
return isPullRequest(branchLike);
}
-function skipRootDir(breadcrumbs: T.ComponentMeasure[]) {
+function skipRootDir(breadcrumbs: ComponentMeasure[]) {
return breadcrumbs.filter(component => {
return !(component.qualifier === 'DIR' && component.name === '/');
});
}
-function storeChildrenBase(children: T.ComponentMeasure[]) {
+function storeChildrenBase(children: ComponentMeasure[]) {
children.forEach(addComponent);
}
-function storeChildrenBreadcrumbs(parentComponentKey: string, children: T.Breadcrumb[]) {
+function storeChildrenBreadcrumbs(parentComponentKey: string, children: Breadcrumb[]) {
const parentBreadcrumbs = getComponentBreadcrumbs(parentComponentKey);
if (parentBreadcrumbs) {
children.forEach(child => {
@@ -166,7 +167,7 @@ export function retrieveComponentChildren(
qualifier: string,
instance: { mounted: boolean },
branchLike?: BranchLike
-): Promise<{ components: T.ComponentMeasure[]; page: number; total: number }> {
+): Promise<{ components: ComponentMeasure[]; page: number; total: number }> {
const existing = getComponentChildren(componentKey);
if (existing) {
return Promise.resolve({
@@ -200,7 +201,7 @@ function retrieveComponentBreadcrumbs(
component: string,
instance: { mounted: boolean },
branchLike?: BranchLike
-): Promise<T.Breadcrumb[]> {
+): Promise<Breadcrumb[]> {
const existing = getComponentBreadcrumbs(component);
if (existing) {
return Promise.resolve(existing);
@@ -222,9 +223,9 @@ export function retrieveComponent(
instance: { mounted: boolean },
branchLike?: BranchLike
): Promise<{
- breadcrumbs: T.Breadcrumb[];
- component: T.ComponentMeasure;
- components: T.ComponentMeasure[];
+ breadcrumbs: Breadcrumb[];
+ component: ComponentMeasure;
+ components: ComponentMeasure[];
page: number;
total: number;
}> {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx
index 0d2b133c77c..da930cbf779 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx
@@ -20,16 +20,17 @@
import * as React from 'react';
import { Profile as BaseProfile } from '../../../api/quality-profiles';
import { Button } from '../../../components/controls/buttons';
+import { Rule, RuleActivation, RuleDetails } from '../../../types/types';
import ActivationFormModal from './ActivationFormModal';
interface Props {
- activation?: T.RuleActivation;
+ activation?: RuleActivation;
buttonText: string;
className?: string;
modalHeader: string;
onDone: (severity: string) => Promise<void>;
profiles: BaseProfile[];
- rule: T.Rule | T.RuleDetails;
+ rule: Rule | RuleDetails;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx
index dd4a680feb0..1c963c7702d 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/ActivationFormModal.tsx
@@ -28,19 +28,20 @@ import { Alert } from '../../../components/ui/Alert';
import { SEVERITIES } from '../../../helpers/constants';
import { translate } from '../../../helpers/l10n';
import { sanitizeString } from '../../../helpers/sanitize';
+import { Dict, Rule, RuleActivation, RuleDetails } from '../../../types/types';
import { sortProfiles } from '../../quality-profiles/utils';
interface Props {
- activation?: T.RuleActivation;
+ activation?: RuleActivation;
modalHeader: string;
onClose: () => void;
onDone: (severity: string) => Promise<void>;
profiles: Profile[];
- rule: T.Rule | T.RuleDetails;
+ rule: Rule | RuleDetails;
}
interface State {
- params: T.Dict<string>;
+ params: Dict<string>;
profile: string;
severity: string;
submitting: boolean;
@@ -69,7 +70,7 @@ export default class ActivationFormModal extends React.PureComponent<Props, Stat
}
getParams = ({ activation, rule } = this.props) => {
- const params: T.Dict<string> = {};
+ const params: Dict<string> = {};
if (rule && rule.params) {
for (const param of rule.params) {
params[param.key] = param.defaultValue || '';
@@ -148,7 +149,7 @@ export default class ActivationFormModal extends React.PureComponent<Props, Stat
const { profile, severity, submitting } = this.state;
const { params = [] } = rule;
const profilesWithDepth = this.getQualityProfilesWithDepth();
- const isCustomRule = !!(rule as T.RuleDetails).templateKey;
+ const isCustomRule = !!(rule as RuleDetails).templateKey;
const activeInAllProfiles = profilesWithDepth.length <= 0;
const isUpdateMode = !!activation;
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx
index 52157b66998..90ca67697d9 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/App.tsx
@@ -45,6 +45,15 @@ import { isLoggedIn } from '../../../helpers/users';
import { getCurrentUser, getLanguages, Store } from '../../../store/rootReducer';
import { SecurityStandard } from '../../../types/security';
import {
+ CurrentUser,
+ Dict,
+ Languages,
+ Paging,
+ RawQuery,
+ Rule,
+ RuleActivation
+} from '../../../types/types';
+import {
shouldOpenSonarSourceSecurityFacet,
shouldOpenStandardsChildFacet,
shouldOpenStandardsFacet,
@@ -78,8 +87,8 @@ const MAX_SEARCH_LENGTH = 200;
const LIMIT_BEFORE_LOAD_MORE = 5;
interface Props extends WithRouterProps {
- currentUser: T.CurrentUser;
- languages: T.Languages;
+ currentUser: CurrentUser;
+ languages: Languages;
}
interface State {
@@ -88,12 +97,12 @@ interface State {
facets?: Facets;
loading: boolean;
openFacets: OpenFacets;
- openRule?: T.Rule;
- paging?: T.Paging;
+ openRule?: Rule;
+ paging?: Paging;
query: Query;
- referencedProfiles: T.Dict<Profile>;
- referencedRepositories: T.Dict<{ key: string; language: string; name: string }>;
- rules: T.Rule[];
+ referencedProfiles: Dict<Profile>;
+ referencedRepositories: Dict<{ key: string; language: string; name: string }>;
+ rules: Rule[];
selected?: string;
usingPermalink?: boolean;
}
@@ -184,7 +193,7 @@ export class App extends React.PureComponent<Props, State> {
detachShortcuts = () => key.deleteScope('coding-rules');
- getOpenRule = (props: Props, rules: T.Rule[]) => {
+ getOpenRule = (props: Props, rules: Rule[]) => {
const open = getOpen(props.location.query);
return open && rules.find(rule => rule.key === open);
};
@@ -244,7 +253,7 @@ export class App extends React.PureComponent<Props, State> {
);
};
- makeFetchRequest = (query?: T.RawQuery) =>
+ makeFetchRequest = (query?: RawQuery) =>
searchRules({ ...this.getSearchParameters(), ...query }).then(
({ actives: rawActives, facets: rawFacets, p, ps, rules, total }) => {
const actives = rawActives && parseActives(rawActives);
@@ -254,7 +263,7 @@ export class App extends React.PureComponent<Props, State> {
}
);
- fetchFirstRules = (query?: T.RawQuery) => {
+ fetchFirstRules = (query?: RawQuery) => {
this.setState({ loading: true });
this.makeFetchRequest(query).then(({ actives, facets, paging, rules }) => {
if (this.mounted) {
@@ -474,7 +483,7 @@ export class App extends React.PureComponent<Props, State> {
handleReset = () => this.props.router.push({ pathname: this.props.location.pathname });
/** Tries to take rule by index, or takes the last one */
- pickRuleAround = (rules: T.Rule[], selectedIndex: number | undefined) => {
+ pickRuleAround = (rules: Rule[], selectedIndex: number | undefined) => {
if (selectedIndex === undefined || rules.length === 0) {
return undefined;
}
@@ -672,7 +681,7 @@ export class App extends React.PureComponent<Props, State> {
}
}
-function parseActives(rawActives: T.Dict<T.RuleActivation[]>) {
+function parseActives(rawActives: Dict<RuleActivation[]>) {
const actives: Actives = {};
for (const [rule, activations] of Object.entries(rawActives)) {
actives[rule] = {};
@@ -686,7 +695,7 @@ function parseActives(rawActives: T.Dict<T.RuleActivation[]>) {
function parseFacets(rawFacets: { property: string; values: { count: number; val: string }[] }[]) {
const facets: Facets = {};
for (const rawFacet of rawFacets) {
- const values: T.Dict<number> = {};
+ const values: Dict<number> = {};
for (const rawValue of rawFacet.values) {
values[rawValue.val] = rawValue.count;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx
index c1fa64a8758..06b15dff35a 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChange.tsx
@@ -24,13 +24,14 @@ import Dropdown from '../../../components/controls/Dropdown';
import Tooltip from '../../../components/controls/Tooltip';
import { PopupPlacement } from '../../../components/ui/popups';
import { translate } from '../../../helpers/l10n';
+import { Dict, Languages } from '../../../types/types';
import { Query } from '../query';
import BulkChangeModal from './BulkChangeModal';
interface Props {
- languages: T.Languages;
+ languages: Languages;
query: Query;
- referencedProfiles: T.Dict<Profile>;
+ referencedProfiles: Dict<Profile>;
total: number;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx
index bb853cf92c5..c286d89510e 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/BulkChangeModal.tsx
@@ -25,15 +25,16 @@ import SelectLegacy from '../../../components/controls/SelectLegacy';
import { Alert } from '../../../components/ui/Alert';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
+import { Dict, Languages } from '../../../types/types';
import { Query, serializeQuery } from '../query';
interface Props {
action: string;
- languages: T.Languages;
+ languages: Languages;
onClose: () => void;
profile?: Profile;
query: Query;
- referencedProfiles: T.Dict<Profile>;
+ referencedProfiles: Dict<Profile>;
total: number;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx
index d6c87f1c5c1..d1b0d9f28d3 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleButton.tsx
@@ -18,13 +18,14 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { RuleDetails } from '../../../types/types';
import CustomRuleFormModal from './CustomRuleFormModal';
interface Props {
children: (props: { onClick: () => void }) => React.ReactNode;
- customRule?: T.RuleDetails;
- onDone: (newRuleDetails: T.RuleDetails) => void;
- templateRule: T.RuleDetails;
+ customRule?: RuleDetails;
+ onDone: (newRuleDetails: RuleDetails) => void;
+ templateRule: RuleDetails;
}
interface State {
@@ -53,7 +54,7 @@ export default class CustomRuleButton extends React.PureComponent<Props, State>
}
};
- handleDone = (newRuleDetails: T.RuleDetails) => {
+ handleDone = (newRuleDetails: RuleDetails) => {
this.handleModalClose();
this.props.onDone(newRuleDetails);
};
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx
index 25fcb3c8e60..0d6482a6c73 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormModal.tsx
@@ -33,12 +33,13 @@ import { csvEscape } from '../../../helpers/csv';
import { translate } from '../../../helpers/l10n';
import { sanitizeString } from '../../../helpers/sanitize';
import { latinize } from '../../../helpers/strings';
+import { Dict, RuleDetails, RuleParameter, RuleType } from '../../../types/types';
interface Props {
- customRule?: T.RuleDetails;
+ customRule?: RuleDetails;
onClose: () => void;
- onDone: (newRuleDetails: T.RuleDetails) => void;
- templateRule: T.RuleDetails;
+ onDone: (newRuleDetails: RuleDetails) => void;
+ templateRule: RuleDetails;
}
interface State {
@@ -46,7 +47,7 @@ interface State {
key: string;
keyModifiedByUser: boolean;
name: string;
- params: T.Dict<string>;
+ params: Dict<string>;
reactivating: boolean;
severity: string;
status: string;
@@ -59,7 +60,7 @@ export default class CustomRuleFormModal extends React.PureComponent<Props, Stat
constructor(props: Props) {
super(props);
- const params: T.Dict<string> = {};
+ const params: Dict<string> = {};
if (props.customRule && props.customRule.params) {
for (const param of props.customRule.params) {
params[param.key] = param.defaultValue || '';
@@ -211,7 +212,7 @@ export default class CustomRuleFormModal extends React.PureComponent<Props, Stat
</div>
);
- renderTypeOption = ({ value }: { value: T.RuleType }) => {
+ renderTypeOption = ({ value }: { value: RuleType }) => {
return <TypeHelper type={value} />;
};
@@ -277,7 +278,7 @@ export default class CustomRuleFormModal extends React.PureComponent<Props, Stat
</div>
);
- renderParameterField = (param: T.RuleParameter) => (
+ renderParameterField = (param: RuleParameter) => (
<div className="modal-field" key={param.key}>
<label className="capitalize" htmlFor={param.key}>
{param.key}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/Facet.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/Facet.tsx
index c5af27f619f..6da6f1e5966 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/Facet.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/Facet.tsx
@@ -27,13 +27,14 @@ import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import { translate } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
+import { Dict } from '../../../types/types';
import { FacetKey } from '../query';
export interface BasicProps {
- onChange: (changes: T.Dict<string | string[] | undefined>) => void;
+ onChange: (changes: Dict<string | string[] | undefined>) => void;
onToggle: (facet: FacetKey) => void;
open: boolean;
- stats?: T.Dict<number>;
+ stats?: Dict<number>;
values: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/FacetsList.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/FacetsList.tsx
index 2cedf3297aa..fd68568f723 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/FacetsList.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/FacetsList.tsx
@@ -19,6 +19,7 @@
*/
import * as React from 'react';
import { Profile } from '../../../api/quality-profiles';
+import { Dict } from '../../../types/types';
import StandardFacet from '../../issues/sidebar/StandardFacet';
import { Facets, OpenFacets, Query } from '../query';
import ActivationSeverityFacet from './ActivationSeverityFacet';
@@ -40,8 +41,8 @@ export interface FacetsListProps {
onFilterChange: (changes: Partial<Query>) => void;
openFacets: OpenFacets;
query: Query;
- referencedProfiles: T.Dict<Profile>;
- referencedRepositories: T.Dict<{ key: string; language: string; name: string }>;
+ referencedProfiles: Dict<Profile>;
+ referencedRepositories: Dict<{ key: string; language: string; name: string }>;
selectedProfile?: Profile;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/InheritanceFacet.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/InheritanceFacet.tsx
index 73c9b85d5cb..839997efa8a 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/InheritanceFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/InheritanceFacet.tsx
@@ -19,15 +19,16 @@
*/
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { RuleInheritance } from '../../../types/types';
import Facet, { BasicProps } from './Facet';
-interface Props extends T.Omit<BasicProps, 'values'> {
+interface Props extends Omit<BasicProps, 'values'> {
disabled: boolean;
- value: T.RuleInheritance | undefined;
+ value: RuleInheritance | undefined;
}
export default class InheritanceFacet extends React.PureComponent<Props> {
- renderName = (value: T.RuleInheritance) =>
+ renderName = (value: RuleInheritance) =>
translate('coding_rules.filters.inheritance', value.toLowerCase());
render() {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/PageActions.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/PageActions.tsx
index 29a76efda9c..41f81b86009 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/PageActions.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/PageActions.tsx
@@ -23,11 +23,12 @@ import ReloadButton from '../../../components/controls/ReloadButton';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import PageShortcutsTooltip from '../../../components/ui/PageShortcutsTooltip';
import { translate } from '../../../helpers/l10n';
+import { Paging } from '../../../types/types';
export interface PageActionsProps {
loading: boolean;
onReload: () => void;
- paging?: T.Paging;
+ paging?: Paging;
selectedIndex?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/ProfileFacet.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/ProfileFacet.tsx
index bd968b073ab..95708f97f09 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/ProfileFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/ProfileFacet.tsx
@@ -27,6 +27,7 @@ import FacetHeader from '../../../components/facet/FacetHeader';
import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import { translate } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { FacetKey, Query } from '../query';
interface Props {
@@ -36,7 +37,7 @@ interface Props {
onChange: (changes: Partial<Query>) => void;
onToggle: (facet: FacetKey) => void;
open: boolean;
- referencedProfiles: T.Dict<Profile>;
+ referencedProfiles: Dict<Profile>;
value: string | undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RepositoryFacet.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RepositoryFacet.tsx
index cc1b0767edb..b4588d7da8d 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RepositoryFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RepositoryFacet.tsx
@@ -24,14 +24,15 @@ import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { translate } from '../../../helpers/l10n';
import { highlightTerm } from '../../../helpers/search';
import { getLanguages, Store } from '../../../store/rootReducer';
+import { Dict } from '../../../types/types';
import { BasicProps } from './Facet';
interface StateProps {
- referencedLanguages: T.Dict<{ key: string; name: string }>;
+ referencedLanguages: Dict<{ key: string; name: string }>;
}
interface Props extends BasicProps, StateProps {
- referencedRepositories: T.Dict<{ key: string; language: string; name: string }>;
+ referencedRepositories: Dict<{ key: string; language: string; name: string }>;
}
export class RepositoryFacet extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx
index 09198ba7b40..df5379be796 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx
@@ -25,6 +25,7 @@ import ConfirmButton from '../../../components/controls/ConfirmButton';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Dict, RuleActivation, RuleDetails as TypeRuleDetails } from '../../../types/types';
import { Activation, Query } from '../query';
import CustomRuleButton from './CustomRuleButton';
import RuleDetailsCustomRules from './RuleDetailsCustomRules';
@@ -42,16 +43,16 @@ interface Props {
onDeactivate: (profile: string, rule: string) => void;
onDelete: (rule: string) => void;
onFilterChange: (changes: Partial<Query>) => void;
- referencedProfiles: T.Dict<Profile>;
- referencedRepositories: T.Dict<{ key: string; language: string; name: string }>;
+ referencedProfiles: Dict<Profile>;
+ referencedRepositories: Dict<{ key: string; language: string; name: string }>;
ruleKey: string;
selectedProfile?: Profile;
}
interface State {
- actives?: T.RuleActivation[];
+ actives?: RuleActivation[];
loading: boolean;
- ruleDetails?: T.RuleDetails;
+ ruleDetails?: TypeRuleDetails;
}
export default class RuleDetails extends React.PureComponent<Props, State> {
@@ -93,7 +94,7 @@ export default class RuleDetails extends React.PureComponent<Props, State> {
);
};
- handleRuleChange = (ruleDetails: T.RuleDetails) => {
+ handleRuleChange = (ruleDetails: TypeRuleDetails) => {
if (this.mounted) {
this.setState({ ruleDetails });
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx
index 7acce41dcb1..c6a867a8bed 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx
@@ -27,16 +27,17 @@ import SeverityHelper from '../../../components/shared/SeverityHelper';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getRuleUrl } from '../../../helpers/urls';
+import { Rule, RuleDetails } from '../../../types/types';
import CustomRuleButton from './CustomRuleButton';
interface Props {
canChange?: boolean;
- ruleDetails: T.RuleDetails;
+ ruleDetails: RuleDetails;
}
interface State {
loading: boolean;
- rules?: T.Rule[];
+ rules?: Rule[];
}
export default class RuleDetailsCustomRules extends React.PureComponent<Props, State> {
@@ -77,7 +78,7 @@ export default class RuleDetailsCustomRules extends React.PureComponent<Props, S
);
};
- handleRuleCreate = (newRuleDetails: T.RuleDetails) => {
+ handleRuleCreate = (newRuleDetails: RuleDetails) => {
if (this.mounted) {
this.setState(({ rules = [] }: State) => ({
rules: [...rules, newRuleDetails]
@@ -95,7 +96,7 @@ export default class RuleDetailsCustomRules extends React.PureComponent<Props, S
});
};
- renderRule = (rule: T.Rule) => (
+ renderRule = (rule: Rule) => (
<tr data-rule={rule.key} key={rule.key}>
<td className="coding-rules-detail-list-name">
<Link to={getRuleUrl(rule.key)}>{rule.name}</Link>
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx
index 79eb7b4007a..83be0999eb9 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx
@@ -23,12 +23,13 @@ import FormattingTips from '../../../components/common/FormattingTips';
import { Button, ResetButtonLink } from '../../../components/controls/buttons';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { sanitizeString } from '../../../helpers/sanitize';
+import { RuleDetails } from '../../../types/types';
import RemoveExtendedDescriptionModal from './RemoveExtendedDescriptionModal';
interface Props {
canWrite: boolean | undefined;
- onChange: (newRuleDetails: T.RuleDetails) => void;
- ruleDetails: T.RuleDetails;
+ onChange: (newRuleDetails: RuleDetails) => void;
+ ruleDetails: RuleDetails;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx
index af2f02e39ab..9012c4cbff8 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsIssues.tsx
@@ -26,10 +26,11 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
import { getIssuesUrl } from '../../../helpers/urls';
+import { AppState, RuleDetails } from '../../../types/types';
interface Props {
- appState: Pick<T.AppState, 'branchesEnabled'>;
- ruleDetails: Pick<T.RuleDetails, 'key' | 'type'>;
+ appState: Pick<AppState, 'branchesEnabled'>;
+ ruleDetails: Pick<RuleDetails, 'key' | 'type'>;
}
interface Project {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
index aa1a09e4e84..7f536e71b4d 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx
@@ -31,6 +31,7 @@ import TagsList from '../../../components/tags/TagsList';
import { PopupPlacement } from '../../../components/ui/popups';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getRuleUrl } from '../../../helpers/urls';
+import { Dict, RuleDetails } from '../../../types/types';
import { Query } from '../query';
import RuleDetailsTagsPopup from './RuleDetailsTagsPopup';
import SimilarRulesFilter from './SimilarRulesFilter';
@@ -40,8 +41,8 @@ interface Props {
hideSimilarRulesFilter?: boolean;
onFilterChange: (changes: Partial<Query>) => void;
onTagsChange: (tags: string[]) => void;
- referencedRepositories: T.Dict<{ key: string; language: string; name: string }>;
- ruleDetails: T.RuleDetails;
+ referencedRepositories: Dict<{ key: string; language: string; name: string }>;
+ ruleDetails: RuleDetails;
}
const EXTERNAL_RULE_REPO_PREFIX = 'external_';
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsParameters.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsParameters.tsx
index 58ff41b223a..0ac6449d606 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsParameters.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsParameters.tsx
@@ -20,13 +20,14 @@
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { sanitizeString } from '../../../helpers/sanitize';
+import { RuleParameter } from '../../../types/types';
interface Props {
- params: T.RuleParameter[];
+ params: RuleParameter[];
}
export default class RuleDetailsParameters extends React.PureComponent<Props> {
- renderParameter = (param: T.RuleParameter) => (
+ renderParameter = (param: RuleParameter) => (
<tr className="coding-rules-detail-parameter" key={param.key}>
<td className="coding-rules-detail-parameter-name">{param.key}</td>
<td className="coding-rules-detail-parameter-description">
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx
index 5155a3d0dbf..28274295ed8 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx
@@ -28,17 +28,18 @@ import Tooltip from '../../../components/controls/Tooltip';
import SeverityHelper from '../../../components/shared/SeverityHelper';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getQualityProfileUrl } from '../../../helpers/urls';
+import { Dict, RuleActivation, RuleDetails } from '../../../types/types';
import BuiltInQualityProfileBadge from '../../quality-profiles/components/BuiltInQualityProfileBadge';
import ActivationButton from './ActivationButton';
import RuleInheritanceIcon from './RuleInheritanceIcon';
interface Props {
- activations: T.RuleActivation[] | undefined;
+ activations: RuleActivation[] | undefined;
canWrite: boolean | undefined;
onActivate: () => Promise<void>;
onDeactivate: () => Promise<void>;
- referencedProfiles: T.Dict<Profile>;
- ruleDetails: T.RuleDetails;
+ referencedProfiles: Dict<Profile>;
+ ruleDetails: RuleDetails;
}
export default class RuleDetailsProfiles extends React.PureComponent<Props> {
@@ -63,7 +64,7 @@ export default class RuleDetailsProfiles extends React.PureComponent<Props> {
}
};
- renderInheritedProfile = (activation: T.RuleActivation, profile: Profile) => {
+ renderInheritedProfile = (activation: RuleActivation, profile: Profile) => {
if (!profile.parentName) {
return null;
}
@@ -82,7 +83,7 @@ export default class RuleDetailsProfiles extends React.PureComponent<Props> {
);
};
- renderSeverity = (activation: T.RuleActivation, parentActivation?: T.RuleActivation) => (
+ renderSeverity = (activation: RuleActivation, parentActivation?: RuleActivation) => (
<td className="coding-rules-detail-quality-profile-severity">
<Tooltip overlay={translate('coding_rules.activation_severity')}>
<span>
@@ -97,10 +98,7 @@ export default class RuleDetailsProfiles extends React.PureComponent<Props> {
</td>
);
- renderParameter = (
- param: { key: string; value: string },
- parentActivation?: T.RuleActivation
- ) => {
+ renderParameter = (param: { key: string; value: string }, parentActivation?: RuleActivation) => {
const originalParam =
parentActivation && parentActivation.params.find(p => p.key === param.key);
const originalValue = originalParam && originalParam.value;
@@ -121,13 +119,13 @@ export default class RuleDetailsProfiles extends React.PureComponent<Props> {
);
};
- renderParameters = (activation: T.RuleActivation, parentActivation?: T.RuleActivation) => (
+ renderParameters = (activation: RuleActivation, parentActivation?: RuleActivation) => (
<td className="coding-rules-detail-quality-profile-parameters">
{activation.params.map(param => this.renderParameter(param, parentActivation))}
</td>
);
- renderActions = (activation: T.RuleActivation, profile: Profile) => {
+ renderActions = (activation: RuleActivation, profile: Profile) => {
const canEdit = profile.actions && profile.actions.edit && !profile.isBuiltIn;
const { ruleDetails } = this.props;
const hasParent = activation.inherit !== 'NONE' && profile.parentKey;
@@ -189,7 +187,7 @@ export default class RuleDetailsProfiles extends React.PureComponent<Props> {
);
};
- renderActivation = (activation: T.RuleActivation) => {
+ renderActivation = (activation: RuleActivation) => {
const { activations = [], ruleDetails } = this.props;
const profile = this.props.referencedProfiles[activation.qProfile];
if (!profile) {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx
index 958400360f5..4e872e4f751 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx
@@ -19,10 +19,11 @@
*/
import * as React from 'react';
import { colors } from '../../../app/theme';
+import { RuleInheritance } from '../../../types/types';
interface Props {
className?: string;
- inheritance: T.RuleInheritance;
+ inheritance: RuleInheritance;
}
export default function RuleInheritanceIcon({ className, inheritance, ...other }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx
index 8900d75c92b..3ad661d4fa9 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx
@@ -29,6 +29,7 @@ import SeverityIcon from '../../../components/icons/SeverityIcon';
import TagsList from '../../../components/tags/TagsList';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getRuleUrl } from '../../../helpers/urls';
+import { Rule } from '../../../types/types';
import { Activation, Query } from '../query';
import ActivationButton from './ActivationButton';
import RuleInheritanceIcon from './RuleInheritanceIcon';
@@ -42,7 +43,7 @@ interface Props {
onDeactivate: (profile: string, rule: string) => void;
onFilterChange: (changes: Partial<Query>) => void;
onOpen: (ruleKey: string) => void;
- rule: T.Rule;
+ rule: Rule;
selected: boolean;
selectedProfile?: Profile;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx
index c859875597c..9ccadb9d90f 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx
@@ -25,11 +25,12 @@ import IssueTypeIcon from '../../../components/icons/IssueTypeIcon';
import TagsIcon from '../../../components/icons/TagsIcon';
import SeverityHelper from '../../../components/shared/SeverityHelper';
import { translate } from '../../../helpers/l10n';
+import { Rule } from '../../../types/types';
import { Query } from '../query';
interface Props {
onFilterChange: (changes: Partial<Query>) => void;
- rule: T.Rule;
+ rule: Rule;
}
export default class SimilarRulesFilter extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/TemplateFacet.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/TemplateFacet.tsx
index 7cd1a8bcc19..3dde2ac9a6d 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/TemplateFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/TemplateFacet.tsx
@@ -22,7 +22,7 @@ import HelpTooltip from '../../../components/controls/HelpTooltip';
import { translate } from '../../../helpers/l10n';
import Facet, { BasicProps } from './Facet';
-interface Props extends T.Omit<BasicProps, 'onChange' | 'values'> {
+interface Props extends Omit<BasicProps, 'onChange' | 'values'> {
onChange: (changes: { template: boolean | undefined }) => void;
value: boolean | undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/PageActions-test.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/PageActions-test.tsx
index a4b82a0412a..8541df87275 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/PageActions-test.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/PageActions-test.tsx
@@ -20,12 +20,13 @@
import { shallow } from 'enzyme';
import * as React from 'react';
+import { Paging } from '../../../../types/types';
import PageActions, { PageActionsProps } from '../PageActions';
it('should render correctly', () => {
expect(shallowRender()).toMatchSnapshot('default');
expect(shallowRender({ loading: true })).toMatchSnapshot('loading');
- expect(shallowRender({ paging: { total: 100 } as T.Paging })).toMatchSnapshot('with paging');
+ expect(shallowRender({ paging: { total: 100 } as Paging })).toMatchSnapshot('with paging');
});
function shallowRender(props: Partial<PageActionsProps> = {}) {
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetails-test.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetails-test.tsx
index 2bda64184fe..bc56f355155 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetails-test.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetails-test.tsx
@@ -23,6 +23,7 @@ import * as React from 'react';
import { deleteRule, getRuleDetails, updateRule } from '../../../../api/rules';
import { mockQualityProfile } from '../../../../helpers/testMocks';
import { waitAndUpdate } from '../../../../helpers/testUtils';
+import { RuleType } from '../../../../types/types';
import RuleDetails from '../RuleDetails';
jest.mock('../../../../api/rules', () => {
@@ -104,7 +105,7 @@ it('should correctly handle rule changes', () => {
repo: 'bar',
severity: 'MAJOR',
status: 'READY',
- type: 'BUG' as T.RuleType
+ type: 'BUG' as RuleType
};
wrapper.instance().handleRuleChange(ruleChange);
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsDescription-test.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsDescription-test.tsx
index 783583d9f57..4787fb62fe0 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsDescription-test.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsDescription-test.tsx
@@ -20,13 +20,14 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { change, click, waitAndUpdate } from '../../../../helpers/testUtils';
+import { RuleDetails } from '../../../../types/types';
import RuleDetailsDescription from '../RuleDetailsDescription';
jest.mock('../../../../api/rules', () => ({
updateRule: jest.fn().mockResolvedValue('updatedrule')
}));
-const RULE: T.RuleDetails = {
+const RULE: RuleDetails = {
key: 'squid:S1133',
repo: 'squid',
name: 'Deprecated code should be removed',
@@ -40,7 +41,7 @@ const RULE: T.RuleDetails = {
type: 'CODE_SMELL'
};
-const EXTERNAL_RULE: T.RuleDetails = {
+const EXTERNAL_RULE: RuleDetails = {
createdAt: '2013-07-26T09:40:51+0200',
key: 'external_xoo:OneExternalIssuePerLine',
repo: 'external_xoo',
@@ -51,7 +52,7 @@ const EXTERNAL_RULE: T.RuleDetails = {
type: 'UNKNOWN'
};
-const EXTERNAL_RULE_WITH_DATA: T.RuleDetails = {
+const EXTERNAL_RULE_WITH_DATA: RuleDetails = {
key: 'external_xoo:OneExternalIssueWithDetailsPerLine',
repo: 'external_xoo',
name: 'One external issue per line',
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsMeta-test.tsx b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsMeta-test.tsx
index cddc097c872..a8fe6708c9d 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsMeta-test.tsx
+++ b/server/sonar-web/src/main/js/apps/coding-rules/components/__tests__/RuleDetailsMeta-test.tsx
@@ -19,10 +19,11 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { RuleDetails } from '../../../../types/types';
import RuleDetailsMeta from '../RuleDetailsMeta';
import RuleDetailsTagsPopup from '../RuleDetailsTagsPopup';
-const RULE: T.RuleDetails = {
+const RULE: RuleDetails = {
key: 'squid:S1133',
repo: 'squid',
name: 'Deprecated code should be removed',
@@ -35,7 +36,7 @@ const RULE: T.RuleDetails = {
type: 'CODE_SMELL'
};
-const EXTERNAL_RULE: T.RuleDetails = {
+const EXTERNAL_RULE: RuleDetails = {
key: 'external_xoo:OneExternalIssuePerLine',
repo: 'external_xoo',
name: 'xoo:OneExternalIssuePerLine',
@@ -47,7 +48,7 @@ const EXTERNAL_RULE: T.RuleDetails = {
type: 'UNKNOWN'
};
-const EXTERNAL_RULE_WITH_DATA: T.RuleDetails = {
+const EXTERNAL_RULE_WITH_DATA: RuleDetails = {
key: 'external_xoo:OneExternalIssueWithDetailsPerLine',
repo: 'external_xoo',
name: 'One external issue per line',
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/query.ts b/server/sonar-web/src/main/js/apps/coding-rules/query.ts
index b851a8a2369..0407fef13fc 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/query.ts
+++ b/server/sonar-web/src/main/js/apps/coding-rules/query.ts
@@ -30,6 +30,7 @@ import {
serializeString,
serializeStringArray
} from '../../helpers/query';
+import { Dict, RawQuery, RuleInheritance } from '../../types/types';
export interface Query {
activation: boolean | undefined;
@@ -37,7 +38,7 @@ export interface Query {
availableSince: Date | undefined;
compareToProfile: string | undefined;
cwe: string[];
- inheritance: T.RuleInheritance | undefined;
+ inheritance: RuleInheritance | undefined;
languages: string[];
owaspTop10: string[];
profile: string | undefined;
@@ -61,10 +62,10 @@ export interface Facet {
export type Facets = { [F in FacetKey]?: Facet };
-export type OpenFacets = T.Dict<boolean>;
+export type OpenFacets = Dict<boolean>;
export interface Activation {
- inherit: T.RuleInheritance;
+ inherit: RuleInheritance;
severity: string;
}
@@ -74,7 +75,7 @@ export interface Actives {
};
}
-export function parseQuery(query: T.RawQuery): Query {
+export function parseQuery(query: RawQuery): Query {
return {
activation: parseAsOptionalBoolean(query.activation),
activationSeverities: parseAsArray(query.active_severities, parseAsString),
@@ -98,7 +99,7 @@ export function parseQuery(query: T.RawQuery): Query {
};
}
-export function serializeQuery(query: Query): T.RawQuery {
+export function serializeQuery(query: Query): RawQuery {
return cleanQuery({
activation: serializeOptionalBoolean(query.activation),
active_severities: serializeStringArray(query.activationSeverities),
@@ -122,7 +123,7 @@ export function serializeQuery(query: Query): T.RawQuery {
});
}
-export function areQueriesEqual(a: T.RawQuery, b: T.RawQuery) {
+export function areQueriesEqual(a: RawQuery, b: RawQuery) {
return queriesEqual(parseQuery(a), parseQuery(b));
}
@@ -152,15 +153,15 @@ export function getAppFacet(serverFacet: string): FacetKey {
return serverFacet === 'active_severities' ? 'activationSeverities' : (serverFacet as FacetKey);
}
-export function getOpen(query: T.RawQuery) {
+export function getOpen(query: RawQuery) {
return query.open;
}
-export function hasRuleKey(query: T.RawQuery) {
+export function hasRuleKey(query: RawQuery) {
return Boolean(query.rule_key);
}
-function parseAsInheritance(value?: string): T.RuleInheritance | undefined {
+function parseAsInheritance(value?: string): RuleInheritance | undefined {
if (value === 'INHERITED' || value === 'NONE' || value === 'OVERRIDES') {
return value;
} else {
@@ -168,6 +169,6 @@ function parseAsInheritance(value?: string): T.RuleInheritance | undefined {
}
}
-function serializeInheritance(value: T.RuleInheritance | undefined): string | undefined {
+function serializeInheritance(value: RuleInheritance | undefined): string | undefined {
return value;
}
diff --git a/server/sonar-web/src/main/js/apps/coding-rules/routes.ts b/server/sonar-web/src/main/js/apps/coding-rules/routes.ts
index 8049584924b..24bbc0ca79b 100644
--- a/server/sonar-web/src/main/js/apps/coding-rules/routes.ts
+++ b/server/sonar-web/src/main/js/apps/coding-rules/routes.ts
@@ -19,10 +19,11 @@
*/
import { RedirectFunction, RouterState } from 'react-router';
import { lazyLoadComponent } from '../../components/lazyLoadComponent';
+import { RawQuery } from '../../types/types';
import { parseQuery, serializeQuery } from './query';
-function parseHash(hash: string): T.RawQuery {
- const query: T.RawQuery = {};
+function parseHash(hash: string): RawQuery {
+ const query: RawQuery = {};
const parts = hash.split('|');
parts.forEach(part => {
const tokens = part.split('=');
diff --git a/server/sonar-web/src/main/js/apps/component-measures/__tests__/utils-test.ts b/server/sonar-web/src/main/js/apps/component-measures/__tests__/utils-test.ts
index 8b8e75c7701..b113953c327 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/__tests__/utils-test.ts
+++ b/server/sonar-web/src/main/js/apps/component-measures/__tests__/utils-test.ts
@@ -19,6 +19,7 @@
*/
import { ComponentQualifier } from '../../../types/component';
import { MetricKey } from '../../../types/metrics';
+import { ComponentMeasure } from '../../../types/types';
import * as utils from '../utils';
const MEASURES = [
@@ -154,7 +155,7 @@ describe('serializeQuery', () => {
});
describe('extract measure', () => {
- const componentBuilder = (qual: ComponentQualifier): T.ComponentMeasure => {
+ const componentBuilder = (qual: ComponentQualifier): ComponentMeasure => {
return {
qualifier: qual,
key: '1',
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx
index 080358d770f..b93ce49dd07 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/App.tsx
@@ -47,6 +47,14 @@ import {
import { fetchBranchStatus } from '../../../store/rootActions';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier, isPortfolioLike } from '../../../types/component';
+import {
+ ComponentMeasure,
+ Dict,
+ Issue,
+ MeasureEnhanced,
+ Metric,
+ Period
+} from '../../../types/types';
import Sidebar from '../sidebar/Sidebar';
import '../style.css';
import {
@@ -69,15 +77,15 @@ import MeasuresEmpty from './MeasuresEmpty';
interface Props extends WithRouterProps {
branchLike?: BranchLike;
- component: T.ComponentMeasure;
+ component: ComponentMeasure;
fetchBranchStatus: (branchLike: BranchLike, projectKey: string) => Promise<void>;
}
interface State {
- leakPeriod?: T.Period;
+ leakPeriod?: Period;
loading: boolean;
- measures: T.MeasureEnhanced[];
- metrics: T.Dict<T.Metric>;
+ measures: MeasureEnhanced[];
+ metrics: Dict<Metric>;
}
export class App extends React.PureComponent<Props, State> {
@@ -167,7 +175,7 @@ export class App extends React.PureComponent<Props, State> {
);
}
- getHelmetTitle = (query: Query, displayOverview: boolean, metric?: T.Metric) => {
+ getHelmetTitle = (query: Query, displayOverview: boolean, metric?: Metric) => {
if (displayOverview && query.metric) {
return isProjectOverview(query.metric)
? translate('component_measures.overview.project_overview.facet')
@@ -195,7 +203,7 @@ export class App extends React.PureComponent<Props, State> {
return metric;
};
- handleIssueChange = (_: T.Issue) => {
+ handleIssueChange = (_: Issue) => {
this.refreshBranchStatus();
};
@@ -228,7 +236,7 @@ export class App extends React.PureComponent<Props, State> {
}
};
- renderContent = (displayOverview: boolean, query: Query, metric?: T.Metric) => {
+ renderContent = (displayOverview: boolean, query: Query, metric?: Metric) => {
const { branchLike, component } = this.props;
const { leakPeriod } = this.state;
if (displayOverview) {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumb.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumb.tsx
index 72e4d154497..6f5303558a5 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumb.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumb.tsx
@@ -20,12 +20,13 @@
import * as React from 'react';
import Tooltip from '../../../components/controls/Tooltip';
import { collapsePath, limitComponentName } from '../../../helpers/path';
+import { ComponentMeasure, ComponentMeasureIntern } from '../../../types/types';
interface Props {
canBrowse: boolean;
- component: T.ComponentMeasure;
+ component: ComponentMeasure;
isLast: boolean;
- handleSelect: (component: T.ComponentMeasureIntern) => void;
+ handleSelect: (component: ComponentMeasureIntern) => void;
}
export default class Breadcrumb extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumbs.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumbs.tsx
index aa2a001df31..7971ad6e08b 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumbs.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/Breadcrumbs.tsx
@@ -22,19 +22,20 @@ import * as React from 'react';
import { getBreadcrumbs } from '../../../api/components';
import { getBranchLikeQuery, isSameBranchLike } from '../../../helpers/branch-like';
import { BranchLike } from '../../../types/branch-like';
+import { ComponentMeasure, ComponentMeasureIntern } from '../../../types/types';
import Breadcrumb from './Breadcrumb';
interface Props {
backToFirst: boolean;
branchLike?: BranchLike;
className?: string;
- component: T.ComponentMeasure;
- handleSelect: (component: T.ComponentMeasureIntern) => void;
- rootComponent: T.ComponentMeasure;
+ component: ComponentMeasure;
+ handleSelect: (component: ComponentMeasureIntern) => void;
+ rootComponent: ComponentMeasure;
}
interface State {
- breadcrumbs: T.ComponentMeasure[];
+ breadcrumbs: ComponentMeasure[];
}
export default class Breadcrumbs extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/LeakPeriodLegend.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/LeakPeriodLegend.tsx
index 419886e780d..8537b1734de 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/LeakPeriodLegend.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/LeakPeriodLegend.tsx
@@ -27,11 +27,12 @@ import DateFromNow from '../../../components/intl/DateFromNow';
import DateTimeFormatter, { formatterOption } from '../../../components/intl/DateTimeFormatter';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getPeriodDate, getPeriodLabel } from '../../../helpers/periods';
+import { ComponentMeasure, Period } from '../../../types/types';
interface Props {
className?: string;
- component: T.ComponentMeasure;
- period: T.Period;
+ component: ComponentMeasure;
+ period: Period;
}
export class LeakPeriodLegend extends React.PureComponent<Props & WrappedComponentProps> {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureContent.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureContent.tsx
index 268241477f9..07b9ccb32a4 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureContent.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureContent.tsx
@@ -35,6 +35,17 @@ import { BranchLike } from '../../../types/branch-like';
import { isFile, isView } from '../../../types/component';
import { MeasurePageView } from '../../../types/measures';
import { MetricKey } from '../../../types/metrics';
+import {
+ ComponentMeasure,
+ ComponentMeasureEnhanced,
+ ComponentMeasureIntern,
+ Dict,
+ Issue,
+ Measure,
+ Metric,
+ Paging,
+ Period
+} from '../../../types/types';
import { complementary } from '../config/complementary';
import FilesView from '../drilldown/FilesView';
import TreeMapView from '../drilldown/TreeMapView';
@@ -46,11 +57,11 @@ import MeasureViewSelect from './MeasureViewSelect';
interface Props {
branchLike?: BranchLike;
- leakPeriod?: T.Period;
- requestedMetric: Pick<T.Metric, 'key' | 'direction'>;
- metrics: T.Dict<T.Metric>;
- onIssueChange?: (issue: T.Issue) => void;
- rootComponent: T.ComponentMeasure;
+ leakPeriod?: Period;
+ requestedMetric: Pick<Metric, 'key' | 'direction'>;
+ metrics: Dict<Metric>;
+ onIssueChange?: (issue: Issue) => void;
+ rootComponent: ComponentMeasure;
router: InjectedRouter;
selected?: string;
updateQuery: (query: Partial<Query>) => void;
@@ -58,14 +69,14 @@ interface Props {
}
interface State {
- baseComponent?: T.ComponentMeasure;
- components: T.ComponentMeasureEnhanced[];
+ baseComponent?: ComponentMeasure;
+ components: ComponentMeasureEnhanced[];
loadingMoreComponents: boolean;
- measure?: T.Measure;
- metric?: T.Metric;
- paging?: T.Paging;
- secondaryMeasure?: T.Measure;
- selectedComponent?: T.ComponentMeasureIntern;
+ measure?: Measure;
+ metric?: Metric;
+ paging?: Paging;
+ secondaryMeasure?: Measure;
+ selectedComponent?: ComponentMeasureIntern;
}
export default class MeasureContent extends React.PureComponent<Props, State> {
@@ -180,7 +191,7 @@ export default class MeasureContent extends React.PureComponent<Props, State> {
getComponentRequestParams(
view: MeasurePageView,
- metric: Pick<T.Metric, 'key' | 'direction'>,
+ metric: Pick<Metric, 'key' | 'direction'>,
options: Object = {}
) {
const strategy = view === 'list' ? 'leaves' : 'children';
@@ -231,7 +242,7 @@ export default class MeasureContent extends React.PureComponent<Props, State> {
this.props.updateQuery({ view });
};
- onOpenComponent = (component: T.ComponentMeasureIntern) => {
+ onOpenComponent = (component: ComponentMeasureIntern) => {
if (isView(this.props.rootComponent.qualifier)) {
const comp = this.state.components.find(
c =>
@@ -253,7 +264,7 @@ export default class MeasureContent extends React.PureComponent<Props, State> {
}
};
- onSelectComponent = (component: T.ComponentMeasureIntern) => {
+ onSelectComponent = (component: ComponentMeasureIntern) => {
this.setState({ selectedComponent: component });
};
@@ -296,7 +307,7 @@ export default class MeasureContent extends React.PureComponent<Props, State> {
selectedIdx={selectedIdx}
selectedComponent={
selectedIdx !== undefined
- ? (this.state.selectedComponent as T.ComponentMeasureEnhanced)
+ ? (this.state.selectedComponent as ComponentMeasureEnhanced)
: undefined
}
view={view}
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureHeader.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureHeader.tsx
index 564017d2dd2..eab63058977 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureHeader.tsx
@@ -28,16 +28,17 @@ import { getLocalizedMetricName, translate } from '../../../helpers/l10n';
import { isDiffMetric } from '../../../helpers/measures';
import { getMeasureHistoryUrl } from '../../../helpers/urls';
import { BranchLike } from '../../../types/branch-like';
+import { ComponentMeasure, Measure as TypeMeasure, Metric, Period } from '../../../types/types';
import { hasFullMeasures } from '../utils';
import LeakPeriodLegend from './LeakPeriodLegend';
interface Props {
branchLike?: BranchLike;
- component: T.ComponentMeasure;
- leakPeriod?: T.Period;
+ component: ComponentMeasure;
+ leakPeriod?: Period;
measureValue?: string;
- metric: T.Metric;
- secondaryMeasure?: T.Measure;
+ metric: Metric;
+ secondaryMeasure?: TypeMeasure;
}
export default function MeasureHeader(props: Props) {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverview.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverview.tsx
index 95842447139..a7401368782 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverview.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverview.tsx
@@ -26,6 +26,16 @@ import PageActions from '../../../components/ui/PageActions';
import { getBranchLikeQuery, isSameBranchLike } from '../../../helpers/branch-like';
import { BranchLike } from '../../../types/branch-like';
import { isFile } from '../../../types/component';
+import {
+ ComponentMeasure,
+ ComponentMeasureEnhanced,
+ ComponentMeasureIntern,
+ Dict,
+ Issue,
+ Metric,
+ Paging,
+ Period
+} from '../../../types/types';
import BubbleChart from '../drilldown/BubbleChart';
import { BUBBLES_FETCH_LIMIT, enhanceComponent, getBubbleMetrics, hasFullMeasures } from '../utils';
import Breadcrumbs from './Breadcrumbs';
@@ -35,20 +45,20 @@ import MeasureContentHeader from './MeasureContentHeader';
interface Props {
branchLike?: BranchLike;
className?: string;
- component: T.ComponentMeasure;
+ component: ComponentMeasure;
domain: string;
- leakPeriod?: T.Period;
+ leakPeriod?: Period;
loading: boolean;
- metrics: T.Dict<T.Metric>;
- onIssueChange?: (issue: T.Issue) => void;
- rootComponent: T.ComponentMeasure;
- updateLoading: (param: T.Dict<boolean>) => void;
- updateSelected: (component: T.ComponentMeasureIntern) => void;
+ metrics: Dict<Metric>;
+ onIssueChange?: (issue: Issue) => void;
+ rootComponent: ComponentMeasure;
+ updateLoading: (param: Dict<boolean>) => void;
+ updateSelected: (component: ComponentMeasureIntern) => void;
}
interface State {
- components: T.ComponentMeasureEnhanced[];
- paging?: T.Paging;
+ components: ComponentMeasureEnhanced[];
+ paging?: Paging;
}
export default class MeasureOverview extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverviewContainer.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverviewContainer.tsx
index 0fb21b2703e..b7411553e05 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverviewContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverviewContainer.tsx
@@ -24,6 +24,14 @@ import { getBranchLikeQuery, isSameBranchLike } from '../../../helpers/branch-li
import { getProjectUrl } from '../../../helpers/urls';
import { BranchLike } from '../../../types/branch-like';
import { isView } from '../../../types/component';
+import {
+ ComponentMeasure,
+ ComponentMeasureIntern,
+ Dict,
+ Issue,
+ Metric,
+ Period
+} from '../../../types/types';
import { Query } from '../utils';
import MeasureOverview from './MeasureOverview';
@@ -31,10 +39,10 @@ interface Props {
branchLike?: BranchLike;
className?: string;
domain: string;
- leakPeriod?: T.Period;
- metrics: T.Dict<T.Metric>;
- onIssueChange?: (issue: T.Issue) => void;
- rootComponent: T.ComponentMeasure;
+ leakPeriod?: Period;
+ metrics: Dict<Metric>;
+ onIssueChange?: (issue: Issue) => void;
+ rootComponent: ComponentMeasure;
router: InjectedRouter;
selected?: string;
updateQuery: (query: Partial<Query>) => void;
@@ -46,7 +54,7 @@ interface LoadingState {
}
interface State {
- component?: T.ComponentMeasure;
+ component?: ComponentMeasure;
loading: LoadingState;
}
@@ -103,7 +111,7 @@ export default class MeasureOverviewContainer extends React.PureComponent<Props,
}
};
- updateSelected = (component: T.ComponentMeasureIntern) => {
+ updateSelected = (component: ComponentMeasureIntern) => {
if (this.state.component && isView(this.state.component.qualifier)) {
this.props.router.push(getProjectUrl(component.refKey || component.key, component.branch));
} else {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureViewSelect.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureViewSelect.tsx
index f86e9761b8d..91a7de45691 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureViewSelect.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureViewSelect.tsx
@@ -24,11 +24,12 @@ import TreeIcon from '../../../components/icons/TreeIcon';
import TreemapIcon from '../../../components/icons/TreemapIcon';
import { translate } from '../../../helpers/l10n';
import { MeasurePageView } from '../../../types/measures';
+import { Metric } from '../../../types/types';
import { hasList, hasTree, hasTreemap } from '../utils';
interface Props {
className?: string;
- metric: T.Metric;
+ metric: Metric;
handleViewChange: (view: MeasurePageView) => void;
view: MeasurePageView;
}
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/LeakPeriodLegend-test.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/LeakPeriodLegend-test.tsx
index 2ba3b0220a4..9da3eb8d0b1 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/LeakPeriodLegend-test.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/LeakPeriodLegend-test.tsx
@@ -21,6 +21,7 @@ import { differenceInDays } from 'date-fns';
import { shallow } from 'enzyme';
import * as React from 'react';
import { IntlShape } from 'react-intl';
+import { ComponentMeasure, Period } from '../../../../types/types';
import { LeakPeriodLegend } from '../LeakPeriodLegend';
jest.mock('date-fns', () => {
@@ -40,14 +41,14 @@ const APP = {
qualifier: 'APP'
};
-const PERIOD: T.Period = {
+const PERIOD: Period = {
date: '2017-05-16T13:50:02+0200',
index: 1,
mode: 'previous_version',
parameter: '6,4'
};
-const PERIOD_DAYS: T.Period = {
+const PERIOD_DAYS: Period = {
date: '2017-05-16T13:50:02+0200',
index: 1,
mode: 'days',
@@ -68,7 +69,7 @@ it('should render a more precise date', () => {
expect(getWrapper(PROJECT, PERIOD)).toMatchSnapshot();
});
-function getWrapper(component: T.ComponentMeasure, period: T.Period) {
+function getWrapper(component: ComponentMeasure, period: Period) {
return shallow(
<LeakPeriodLegend
component={component}
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.tsx b/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.tsx
index 5327a836960..ee9b5d2dd17 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.tsx
@@ -20,6 +20,7 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { mockBranch } from '../../../../helpers/mocks/branch-like';
+import { Period } from '../../../../types/types';
import MeasureHeader from '../MeasureHeader';
const METRIC = {
@@ -50,7 +51,7 @@ const PROPS = {
index: 1,
mode: 'previous_version',
parameter: '6,4'
- } as T.Period,
+ } as Period,
measureValue: '3.0',
metric: METRIC
};
diff --git a/server/sonar-web/src/main/js/apps/component-measures/config/complementary.ts b/server/sonar-web/src/main/js/apps/component-measures/config/complementary.ts
index ffb3b354597..cc028499b2b 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/config/complementary.ts
+++ b/server/sonar-web/src/main/js/apps/component-measures/config/complementary.ts
@@ -1,3 +1,5 @@
+import { Dict } from '../../../types/types';
+
/*
* SonarQube
* Copyright (C) 2009-2021 SonarSource SA
@@ -17,7 +19,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-export const complementary: T.Dict<string[]> = {
+export const complementary: Dict<string[]> = {
coverage: ['uncovered_lines', 'uncovered_conditions'],
line_coverage: ['uncovered_lines'],
branch_coverage: ['uncovered_conditions'],
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChart.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChart.tsx
index bfeb34a62df..391ef7c9f0b 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChart.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChart.tsx
@@ -32,6 +32,14 @@ import { formatMeasure, isDiffMetric } from '../../../helpers/measures';
import { isDefined } from '../../../helpers/types';
import { isProject } from '../../../types/component';
import {
+ ComponentMeasure,
+ ComponentMeasureEnhanced,
+ ComponentMeasureIntern,
+ Dict,
+ Metric,
+ Paging
+} from '../../../types/types';
+import {
BUBBLES_FETCH_LIMIT,
getBubbleMetrics,
getBubbleYDomain,
@@ -42,12 +50,12 @@ import EmptyResult from './EmptyResult';
const HEIGHT = 500;
interface Props {
- component: T.ComponentMeasure;
- components: T.ComponentMeasureEnhanced[];
+ component: ComponentMeasure;
+ components: ComponentMeasureEnhanced[];
domain: string;
- metrics: T.Dict<T.Metric>;
- paging?: T.Paging;
- updateSelected: (component: T.ComponentMeasureIntern) => void;
+ metrics: Dict<Metric>;
+ paging?: Paging;
+ updateSelected: (component: ComponentMeasureIntern) => void;
}
interface State {
@@ -59,7 +67,7 @@ export default class BubbleChart extends React.PureComponent<Props, State> {
ratingFilters: {}
};
- getMeasureVal = (component: T.ComponentMeasureEnhanced, metric: T.Metric) => {
+ getMeasureVal = (component: ComponentMeasureEnhanced, metric: Metric) => {
const measure = component.measures.find(measure => measure.metric.key === metric.key);
if (!measure) {
return undefined;
@@ -68,9 +76,9 @@ export default class BubbleChart extends React.PureComponent<Props, State> {
};
getTooltip(
- component: T.ComponentMeasureEnhanced,
+ component: ComponentMeasureEnhanced,
values: { x: number; y: number; size: number; colors?: Array<number | undefined> },
- metrics: { x: T.Metric; y: T.Metric; size: T.Metric; colors?: T.Metric[] }
+ metrics: { x: Metric; y: Metric; size: Metric; colors?: Metric[] }
) {
const inner = [
[component.name, isProject(component.qualifier) ? component.branch : undefined]
@@ -108,8 +116,7 @@ export default class BubbleChart extends React.PureComponent<Props, State> {
});
};
- handleBubbleClick = (component: T.ComponentMeasureEnhanced) =>
- this.props.updateSelected(component);
+ handleBubbleClick = (component: ComponentMeasureEnhanced) => this.props.updateSelected(component);
getDescription(domain: string) {
const description = `component_measures.overview.${domain}.description`;
@@ -120,7 +127,7 @@ export default class BubbleChart extends React.PureComponent<Props, State> {
return translatedDescription;
}
- renderBubbleChart(metrics: { x: T.Metric; y: T.Metric; size: T.Metric; colors?: T.Metric[] }) {
+ renderBubbleChart(metrics: { x: Metric; y: Metric; size: Metric; colors?: Metric[] }) {
const { ratingFilters } = this.state;
const items = this.props.components
@@ -164,7 +171,7 @@ export default class BubbleChart extends React.PureComponent<Props, State> {
}
return (
- <OriginalBubbleChart<T.ComponentMeasureEnhanced>
+ <OriginalBubbleChart<ComponentMeasureEnhanced>
formatXTick={formatXTick}
formatYTick={formatYTick}
height={HEIGHT}
@@ -177,7 +184,7 @@ export default class BubbleChart extends React.PureComponent<Props, State> {
);
}
- renderChartHeader(domain: string, sizeMetric: T.Metric, colorsMetric?: T.Metric[]) {
+ renderChartHeader(domain: string, sizeMetric: Metric, colorsMetric?: Metric[]) {
const { ratingFilters } = this.state;
const { paging } = this.props;
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentCell.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentCell.tsx
index 7d0d3d5665b..0368d922b16 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentCell.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentCell.tsx
@@ -36,12 +36,13 @@ import {
} from '../../../types/component';
import { MeasurePageView } from '../../../types/measures';
import { MetricKey } from '../../../types/metrics';
+import { ComponentMeasure, ComponentMeasureEnhanced, Metric } from '../../../types/types';
export interface ComponentCellProps {
branchLike?: BranchLike;
- component: T.ComponentMeasureEnhanced;
- metric: T.Metric;
- rootComponent: T.ComponentMeasure;
+ component: ComponentMeasureEnhanced;
+ metric: Metric;
+ rootComponent: ComponentMeasure;
view: MeasurePageView;
}
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsList.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsList.tsx
index 1209d04cb86..250eff12b5a 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsList.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsList.tsx
@@ -22,17 +22,18 @@ import { getComponentMeasureUniqueKey } from '../../../helpers/component';
import { getLocalizedMetricName } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
import { MeasurePageView } from '../../../types/measures';
+import { ComponentMeasure, ComponentMeasureEnhanced, Dict, Metric } from '../../../types/types';
import { complementary } from '../config/complementary';
import ComponentsListRow from './ComponentsListRow';
import EmptyResult from './EmptyResult';
interface Props {
branchLike?: BranchLike;
- components: T.ComponentMeasureEnhanced[];
- metric: T.Metric;
- metrics: T.Dict<T.Metric>;
- rootComponent: T.ComponentMeasure;
- selectedComponent?: T.ComponentMeasureEnhanced;
+ components: ComponentMeasureEnhanced[];
+ metric: Metric;
+ metrics: Dict<Metric>;
+ rootComponent: ComponentMeasure;
+ selectedComponent?: ComponentMeasureEnhanced;
view: MeasurePageView;
}
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsListRow.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsListRow.tsx
index ea86423dc39..e2fea247b4e 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsListRow.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/ComponentsListRow.tsx
@@ -21,16 +21,17 @@ import classNames from 'classnames';
import * as React from 'react';
import { BranchLike } from '../../../types/branch-like';
import { MeasurePageView } from '../../../types/measures';
+import { ComponentMeasure, ComponentMeasureEnhanced, Metric } from '../../../types/types';
import ComponentCell from './ComponentCell';
import MeasureCell from './MeasureCell';
interface Props {
branchLike?: BranchLike;
- component: T.ComponentMeasureEnhanced;
+ component: ComponentMeasureEnhanced;
isSelected: boolean;
- otherMetrics: T.Metric[];
- metric: T.Metric;
- rootComponent: T.ComponentMeasure;
+ otherMetrics: Metric[];
+ metric: Metric;
+ rootComponent: ComponentMeasure;
view: MeasurePageView;
}
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/FilesView.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/FilesView.tsx
index 8eb9b7403a8..fede1808bcf 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/FilesView.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/FilesView.tsx
@@ -28,21 +28,28 @@ import { formatMeasure, isDiffMetric, isPeriodBestValue } from '../../../helpers
import { scrollToElement } from '../../../helpers/scrolling';
import { BranchLike } from '../../../types/branch-like';
import { MeasurePageView } from '../../../types/measures';
+import {
+ ComponentMeasure,
+ ComponentMeasureEnhanced,
+ Dict,
+ Metric,
+ Paging
+} from '../../../types/types';
import ComponentsList from './ComponentsList';
interface Props {
branchLike?: BranchLike;
- components: T.ComponentMeasureEnhanced[];
+ components: ComponentMeasureEnhanced[];
defaultShowBestMeasures: boolean;
fetchMore: () => void;
- handleSelect: (component: T.ComponentMeasureEnhanced) => void;
- handleOpen: (component: T.ComponentMeasureEnhanced) => void;
+ handleSelect: (component: ComponentMeasureEnhanced) => void;
+ handleOpen: (component: ComponentMeasureEnhanced) => void;
loadingMore: boolean;
- metric: T.Metric;
- metrics: T.Dict<T.Metric>;
- paging?: T.Paging;
- rootComponent: T.ComponentMeasure;
- selectedComponent?: T.ComponentMeasureEnhanced;
+ metric: Metric;
+ metrics: Dict<Metric>;
+ paging?: Paging;
+ rootComponent: ComponentMeasure;
+ selectedComponent?: ComponentMeasureEnhanced;
selectedIdx?: number;
view: MeasurePageView;
}
@@ -121,7 +128,7 @@ export default class FilesView extends React.PureComponent<Props, State> {
this.setState({ showBestMeasures: true });
};
- hasBestValue = (component: T.ComponentMeasureEnhanced) => {
+ hasBestValue = (component: ComponentMeasureEnhanced) => {
const { metric } = this.props;
const focusedMeasure = component.measures.find(measure => measure.metric.key === metric.key);
if (focusedMeasure && isDiffMetric(metric.key)) {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/MeasureCell.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/MeasureCell.tsx
index 8dfadf8a5e4..5f7e7725f89 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/MeasureCell.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/MeasureCell.tsx
@@ -20,11 +20,12 @@
import * as React from 'react';
import Measure from '../../../components/measure/Measure';
import { isDiffMetric } from '../../../helpers/measures';
+import { ComponentMeasureEnhanced, MeasureEnhanced, Metric } from '../../../types/types';
interface Props {
- component: T.ComponentMeasureEnhanced;
- measure?: T.MeasureEnhanced;
- metric: T.Metric;
+ component: ComponentMeasureEnhanced;
+ measure?: MeasureEnhanced;
+ metric: Metric;
}
export default function MeasureCell({ component, measure, metric }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/drilldown/TreeMapView.tsx b/server/sonar-web/src/main/js/apps/component-measures/drilldown/TreeMapView.tsx
index 052ddfb34a4..4de48eaef18 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/drilldown/TreeMapView.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/drilldown/TreeMapView.tsx
@@ -31,13 +31,14 @@ import { formatMeasure, isDiffMetric } from '../../../helpers/measures';
import { isDefined } from '../../../helpers/types';
import { BranchLike } from '../../../types/branch-like';
import { MetricKey } from '../../../types/metrics';
+import { ComponentMeasureEnhanced, ComponentMeasureIntern, Metric } from '../../../types/types';
import EmptyResult from './EmptyResult';
interface Props {
branchLike?: BranchLike;
- components: T.ComponentMeasureEnhanced[];
- handleSelect: (component: T.ComponentMeasureIntern) => void;
- metric: T.Metric;
+ components: ComponentMeasureEnhanced[];
+ handleSelect: (component: ComponentMeasureIntern) => void;
+ metric: Metric;
}
interface State {
@@ -112,7 +113,7 @@ export default class TreeMapView extends React.PureComponent<Props, State> {
.domain(['ERROR', 'WARN', 'OK', 'NONE'])
.range(LEVEL_COLORS);
- getPercentColorScale = (metric: T.Metric) => {
+ getPercentColorScale = (metric: Metric) => {
const color = scaleLinear<string, string>().domain([0, 25, 50, 75, 100]);
color.range(metric.higherValuesAreBetter ? [...COLORS].reverse() : COLORS);
return color;
@@ -123,7 +124,7 @@ export default class TreeMapView extends React.PureComponent<Props, State> {
.domain([1, 2, 3, 4, 5])
.range(COLORS);
- getColorScale = (metric: T.Metric) => {
+ getColorScale = (metric: Metric) => {
if (metric.type === 'LEVEL') {
return this.getLevelColorScale();
}
@@ -140,10 +141,10 @@ export default class TreeMapView extends React.PureComponent<Props, State> {
sizeMetric,
sizeValue
}: {
- colorMetric: T.Metric;
+ colorMetric: Metric;
colorValue?: string;
- component: T.ComponentMeasureEnhanced;
- sizeMetric: T.Metric;
+ component: ComponentMeasureEnhanced;
+ sizeMetric: Metric;
sizeValue: number;
}) => {
const formatted =
diff --git a/server/sonar-web/src/main/js/apps/component-measures/sidebar/DomainFacet.tsx b/server/sonar-web/src/main/js/apps/component-measures/sidebar/DomainFacet.tsx
index ea1fdfb9823..6523c491d41 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/sidebar/DomainFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/sidebar/DomainFacet.tsx
@@ -30,6 +30,7 @@ import {
hasMessage,
translate
} from '../../../helpers/l10n';
+import { MeasureEnhanced } from '../../../types/types';
import {
addMeasureCategories,
filterMeasures,
@@ -40,7 +41,7 @@ import {
import FacetMeasureValue from './FacetMeasureValue';
interface Props {
- domain: { name: string; measures: T.MeasureEnhanced[] };
+ domain: { name: string; measures: MeasureEnhanced[] };
onChange: (metric: string) => void;
onToggle: (property: string) => void;
open: boolean;
@@ -63,11 +64,7 @@ export default class DomainFacet extends React.PureComponent<Props> {
this.props.onToggle(this.props.domain.name);
};
- hasFacetSelected = (
- domain: { name: string },
- measures: T.MeasureEnhanced[],
- selected: string
- ) => {
+ hasFacetSelected = (domain: { name: string }, measures: MeasureEnhanced[], selected: string) => {
const measureSelected = measures.find(measure => measure.metric.key === selected);
const overviewSelected = domain.name === selected && this.hasOverview(domain.name);
return measureSelected || overviewSelected;
@@ -77,7 +74,7 @@ export default class DomainFacet extends React.PureComponent<Props> {
return this.props.showFullMeasures && hasBubbleChart(domain);
};
- renderItemFacetStat = (item: T.MeasureEnhanced) => {
+ renderItemFacetStat = (item: MeasureEnhanced) => {
return hasFacetStat(item.metric.key) ? (
<FacetMeasureValue displayLeak={this.props.showFullMeasures} measure={item} />
) : null;
diff --git a/server/sonar-web/src/main/js/apps/component-measures/sidebar/FacetMeasureValue.tsx b/server/sonar-web/src/main/js/apps/component-measures/sidebar/FacetMeasureValue.tsx
index edbfc46005e..b50b5cb298d 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/sidebar/FacetMeasureValue.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/sidebar/FacetMeasureValue.tsx
@@ -21,10 +21,11 @@ import classNames from 'classnames';
import * as React from 'react';
import Measure from '../../../components/measure/Measure';
import { isDiffMetric } from '../../../helpers/measures';
+import { MeasureEnhanced } from '../../../types/types';
interface Props {
displayLeak?: boolean;
- measure: T.MeasureEnhanced;
+ measure: MeasureEnhanced;
}
export default function FacetMeasureValue({ measure, displayLeak }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/sidebar/Sidebar.tsx b/server/sonar-web/src/main/js/apps/component-measures/sidebar/Sidebar.tsx
index f2e9f491c1e..c6654b0a593 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/sidebar/Sidebar.tsx
+++ b/server/sonar-web/src/main/js/apps/component-measures/sidebar/Sidebar.tsx
@@ -20,19 +20,20 @@
import * as React from 'react';
import A11ySkipTarget from '../../../app/components/a11y/A11ySkipTarget';
import { translate } from '../../../helpers/l10n';
+import { Dict, MeasureEnhanced } from '../../../types/types';
import { groupByDomains, KNOWN_DOMAINS, PROJECT_OVERVEW, Query } from '../utils';
import DomainFacet from './DomainFacet';
import ProjectOverviewFacet from './ProjectOverviewFacet';
interface Props {
- measures: T.MeasureEnhanced[];
+ measures: MeasureEnhanced[];
selectedMetric: string;
showFullMeasures: boolean;
updateQuery: (query: Partial<Query>) => void;
}
interface State {
- openFacets: T.Dict<boolean>;
+ openFacets: Dict<boolean>;
}
export default class Sidebar extends React.PureComponent<Props, State> {
@@ -84,7 +85,7 @@ export default class Sidebar extends React.PureComponent<Props, State> {
}
}
-function getOpenFacets(openFacets: T.Dict<boolean>, { measures, selectedMetric }: Props) {
+function getOpenFacets(openFacets: Dict<boolean>, { measures, selectedMetric }: Props) {
const newOpenFacets = { ...openFacets };
const measure = measures.find(measure => measure.metric.key === selectedMetric);
if (measure && measure.metric && measure.metric.domain) {
diff --git a/server/sonar-web/src/main/js/apps/component-measures/utils.ts b/server/sonar-web/src/main/js/apps/component-measures/utils.ts
index 806602382b9..3db8ec9b79a 100644
--- a/server/sonar-web/src/main/js/apps/component-measures/utils.ts
+++ b/server/sonar-web/src/main/js/apps/component-measures/utils.ts
@@ -27,6 +27,15 @@ import { BranchLike } from '../../types/branch-like';
import { ComponentQualifier } from '../../types/component';
import { MeasurePageView } from '../../types/measures';
import { MetricKey } from '../../types/metrics';
+import {
+ ComponentMeasure,
+ ComponentMeasureEnhanced,
+ Dict,
+ Measure,
+ MeasureEnhanced,
+ Metric,
+ RawQuery
+} from '../../types/types';
import { bubbles } from './config/bubbles';
import { domains } from './config/domains';
@@ -58,30 +67,30 @@ const BANNED_MEASURES = [
'new_info_violations'
];
-export function filterMeasures(measures: T.MeasureEnhanced[]): T.MeasureEnhanced[] {
+export function filterMeasures(measures: MeasureEnhanced[]): MeasureEnhanced[] {
return measures.filter(measure => !BANNED_MEASURES.includes(measure.metric.key));
}
export function sortMeasures(
domainName: string,
- measures: Array<T.MeasureEnhanced | string>
-): Array<T.MeasureEnhanced | string> {
+ measures: Array<MeasureEnhanced | string>
+): Array<MeasureEnhanced | string> {
const config = domains[domainName] || {};
const configOrder = config.order || [];
return sortBy(measures, [
- (item: T.MeasureEnhanced | string) => {
+ (item: MeasureEnhanced | string) => {
if (typeof item === 'string') {
return configOrder.indexOf(item);
}
const idx = configOrder.indexOf(item.metric.key);
return idx >= 0 ? idx : configOrder.length;
},
- (item: T.MeasureEnhanced | string) =>
+ (item: MeasureEnhanced | string) =>
typeof item === 'string' ? item : getLocalizedMetricName(item.metric)
]);
}
-export function addMeasureCategories(domainName: string, measures: T.MeasureEnhanced[]) {
+export function addMeasureCategories(domainName: string, measures: MeasureEnhanced[]) {
const categories = domains[domainName] && domains[domainName].categories;
if (categories && categories.length > 0) {
return [...categories, ...measures];
@@ -90,10 +99,10 @@ export function addMeasureCategories(domainName: string, measures: T.MeasureEnha
}
export function enhanceComponent(
- component: T.ComponentMeasure,
- metric: Pick<T.Metric, 'key'> | undefined,
- metrics: T.Dict<T.Metric>
-): T.ComponentMeasureEnhanced {
+ component: ComponentMeasure,
+ metric: Pick<Metric, 'key'> | undefined,
+ metrics: Dict<Metric>
+): ComponentMeasureEnhanced {
if (!component.measures) {
return { ...component, measures: [] };
}
@@ -116,10 +125,7 @@ export function isSecurityReviewMetric(metricKey: MetricKey | string): boolean {
].includes(metricKey as MetricKey);
}
-export function banQualityGateMeasure({
- measures = [],
- qualifier
-}: T.ComponentMeasure): T.Measure[] {
+export function banQualityGateMeasure({ measures = [], qualifier }: ComponentMeasure): Measure[] {
const bannedMetrics: string[] = [];
if (ComponentQualifier.Portfolio !== qualifier && ComponentQualifier.SubPortfolio !== qualifier) {
bannedMetrics.push('alert_status');
@@ -130,14 +136,14 @@ export function banQualityGateMeasure({
return measures.filter(measure => !bannedMetrics.includes(measure.metric));
}
-export const groupByDomains = memoize((measures: T.MeasureEnhanced[]) => {
+export const groupByDomains = memoize((measures: MeasureEnhanced[]) => {
const domains = toPairs(groupBy(measures, measure => measure.metric.domain)).map(r => ({
name: r[0],
measures: r[1]
}));
return sortBy(domains, [
- (domain: { name: string; measures: T.MeasureEnhanced[] }) => {
+ (domain: { name: string; measures: MeasureEnhanced[] }) => {
const idx = KNOWN_DOMAINS.indexOf(domain.name);
return idx >= 0 ? idx : KNOWN_DOMAINS.length;
},
@@ -169,7 +175,7 @@ export function hasFullMeasures(branch?: BranchLike) {
return !branch || isBranch(branch);
}
-export function getMeasuresPageMetricKeys(metrics: T.Dict<T.Metric>, branch?: BranchLike) {
+export function getMeasuresPageMetricKeys(metrics: Dict<Metric>, branch?: BranchLike) {
const metricKeys = getDisplayMetrics(Object.values(metrics)).map(metric => metric.key);
if (isPullRequest(branch)) {
@@ -179,7 +185,7 @@ export function getMeasuresPageMetricKeys(metrics: T.Dict<T.Metric>, branch?: Br
}
}
-export function getBubbleMetrics(domain: string, metrics: T.Dict<T.Metric>) {
+export function getBubbleMetrics(domain: string, metrics: Dict<Metric>) {
const conf = bubbles[domain];
return {
x: metrics[conf.x],
@@ -214,7 +220,7 @@ export interface Query {
}
export const parseQuery = memoize(
- (urlQuery: T.RawQuery): Query => {
+ (urlQuery: RawQuery): Query => {
const metric = parseAsString(urlQuery['metric']) || DEFAULT_METRIC;
return {
metric,
diff --git a/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreate.tsx b/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreate.tsx
index 5df872ec83c..581979a38a3 100644
--- a/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreate.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreate.tsx
@@ -30,6 +30,7 @@ import {
} from '../../../api/alm-integrations';
import { AzureProject, AzureRepository } from '../../../types/alm-integration';
import { AlmSettingsInstance } from '../../../types/alm-settings';
+import { Dict } from '../../../types/types';
import AzureCreateProjectRenderer from './AzureProjectCreateRenderer';
interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
@@ -42,12 +43,12 @@ interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
interface State {
importing: boolean;
loading: boolean;
- loadingRepositories: T.Dict<boolean>;
+ loadingRepositories: Dict<boolean>;
patIsValid?: boolean;
projects?: AzureProject[];
- repositories: T.Dict<AzureRepository[]>;
+ repositories: Dict<AzureRepository[]>;
searching?: boolean;
- searchResults?: T.Dict<AzureRepository[]>;
+ searchResults?: Dict<AzureRepository[]>;
searchQuery?: string;
selectedRepository?: AzureRepository;
settings?: AlmSettingsInstance;
diff --git a/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreateRenderer.tsx b/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreateRenderer.tsx
index c026d8988a4..f8c09df1c64 100644
--- a/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreateRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/AzureProjectCreateRenderer.tsx
@@ -29,6 +29,7 @@ import { getBaseUrl } from '../../../helpers/system';
import { getGlobalSettingsUrl } from '../../../helpers/urls';
import { AzureProject, AzureRepository } from '../../../types/alm-integration';
import { AlmKeys, AlmSettingsInstance } from '../../../types/alm-settings';
+import { Dict } from '../../../types/types';
import { ALM_INTEGRATION } from '../../settings/components/AdditionalCategoryKeys';
import AzurePersonalAccessTokenForm from './AzurePersonalAccessTokenForm';
import AzureProjectsList from './AzureProjectsList';
@@ -39,16 +40,16 @@ export interface AzureProjectCreateRendererProps {
canAdmin?: boolean;
importing: boolean;
loading: boolean;
- loadingRepositories: T.Dict<boolean>;
+ loadingRepositories: Dict<boolean>;
onImportRepository: () => void;
onOpenProject: (key: string) => void;
onPersonalAccessTokenCreate: (token: string) => void;
onSearch: (query: string) => void;
onSelectRepository: (repository: AzureRepository) => void;
projects?: AzureProject[];
- repositories: T.Dict<AzureRepository[]>;
+ repositories: Dict<AzureRepository[]>;
searching?: boolean;
- searchResults?: T.Dict<AzureRepository[]>;
+ searchResults?: Dict<AzureRepository[]>;
searchQuery?: string;
selectedRepository?: AzureRepository;
settings?: AlmSettingsInstance;
diff --git a/server/sonar-web/src/main/js/apps/create/project/AzureProjectsList.tsx b/server/sonar-web/src/main/js/apps/create/project/AzureProjectsList.tsx
index ffe2f5f01b3..10922f1e4b1 100644
--- a/server/sonar-web/src/main/js/apps/create/project/AzureProjectsList.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/AzureProjectsList.tsx
@@ -24,17 +24,18 @@ import ListFooter from '../../../components/controls/ListFooter';
import { Alert } from '../../../components/ui/Alert';
import { translate } from '../../../helpers/l10n';
import { AzureProject, AzureRepository } from '../../../types/alm-integration';
+import { Dict } from '../../../types/types';
import AzureProjectAccordion from './AzureProjectAccordion';
import { CreateProjectModes } from './types';
export interface AzureProjectsListProps {
importing: boolean;
- loadingRepositories: T.Dict<boolean>;
+ loadingRepositories: Dict<boolean>;
onOpenProject: (key: string) => void;
onSelectRepository: (repository: AzureRepository) => void;
projects?: AzureProject[];
- repositories: T.Dict<AzureRepository[]>;
- searchResults?: T.Dict<AzureRepository[]>;
+ repositories: Dict<AzureRepository[]>;
+ searchResults?: Dict<AzureRepository[]>;
searchQuery?: string;
selectedRepository?: AzureRepository;
}
diff --git a/server/sonar-web/src/main/js/apps/create/project/BitbucketCloudProjectCreate.tsx b/server/sonar-web/src/main/js/apps/create/project/BitbucketCloudProjectCreate.tsx
index 340008673fd..add78a12ba6 100644
--- a/server/sonar-web/src/main/js/apps/create/project/BitbucketCloudProjectCreate.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/BitbucketCloudProjectCreate.tsx
@@ -25,6 +25,7 @@ import {
} from '../../../api/alm-integrations';
import { BitbucketCloudRepository } from '../../../types/alm-integration';
import { AlmSettingsInstance } from '../../../types/alm-settings';
+import { Paging } from '../../../types/types';
import BitbucketCloudProjectCreateRenderer from './BitbucketCloudProjectCreateRender';
interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
@@ -39,7 +40,7 @@ interface State {
isLastPage?: boolean;
loading: boolean;
loadingMore: boolean;
- projectsPaging: Omit<T.Paging, 'total'>;
+ projectsPaging: Omit<Paging, 'total'>;
resetPat: boolean;
repositories: BitbucketCloudRepository[];
searching: boolean;
diff --git a/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx b/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx
index 506c1ac489a..8d44d0dc355 100644
--- a/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx
@@ -24,13 +24,14 @@ import ChevronsIcon from '../../../components/icons/ChevronsIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getBaseUrl } from '../../../helpers/system';
import { AlmKeys } from '../../../types/alm-settings';
+import { AppState } from '../../../types/types';
import { CreateProjectModes } from './types';
export interface CreateProjectModeSelectionProps {
almCounts: {
[k in AlmKeys]: number;
};
- appState: Pick<T.AppState, 'canAdmin'>;
+ appState: Pick<AppState, 'canAdmin'>;
loadingBindings: boolean;
onSelectMode: (mode: CreateProjectModes) => void;
onConfigMode: (mode: AlmKeys) => void;
diff --git a/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx b/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx
index de750967d72..c26eb266f13 100644
--- a/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx
@@ -27,6 +27,7 @@ import { withAppState } from '../../../components/hoc/withAppState';
import { translate } from '../../../helpers/l10n';
import { getProjectUrl } from '../../../helpers/urls';
import { AlmKeys, AlmSettingsInstance } from '../../../types/alm-settings';
+import { AppState, LoggedInUser } from '../../../types/types';
import AlmBindingDefinitionForm from '../../settings/components/almIntegration/AlmBindingDefinitionForm';
import AzureProjectCreate from './AzureProjectCreate';
import BitbucketCloudProjectCreate from './BitbucketCloudProjectCreate';
@@ -39,8 +40,8 @@ import './style.css';
import { CreateProjectModes } from './types';
interface Props extends Pick<WithRouterProps, 'router' | 'location'> {
- appState: Pick<T.AppState, 'canAdmin' | 'branchesEnabled'>;
- currentUser: T.LoggedInUser;
+ appState: Pick<AppState, 'canAdmin' | 'branchesEnabled'>;
+ currentUser: LoggedInUser;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreate.tsx b/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreate.tsx
index f49167e7ecc..f48b9bfcdb9 100644
--- a/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreate.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreate.tsx
@@ -29,6 +29,7 @@ import {
import { getHostUrl } from '../../../helpers/urls';
import { GithubOrganization, GithubRepository } from '../../../types/alm-integration';
import { AlmKeys, AlmSettingsInstance } from '../../../types/alm-settings';
+import { Paging } from '../../../types/types';
import GitHubProjectCreateRenderer from './GitHubProjectCreateRenderer';
interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
@@ -44,7 +45,7 @@ interface State {
loadingOrganizations: boolean;
loadingRepositories: boolean;
organizations: GithubOrganization[];
- repositoryPaging: T.Paging;
+ repositoryPaging: Paging;
repositories: GithubRepository[];
searchQuery: string;
selectedOrganization?: GithubOrganization;
diff --git a/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreateRenderer.tsx b/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreateRenderer.tsx
index 70113cbccbb..5b44a19d57c 100644
--- a/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreateRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/GitHubProjectCreateRenderer.tsx
@@ -35,6 +35,7 @@ import { getBaseUrl } from '../../../helpers/system';
import { getProjectUrl } from '../../../helpers/urls';
import { GithubOrganization, GithubRepository } from '../../../types/alm-integration';
import { ComponentQualifier } from '../../../types/component';
+import { Paging } from '../../../types/types';
import CreateProjectPageHeader from './CreateProjectPageHeader';
export interface GitHubProjectCreateRendererProps {
@@ -51,7 +52,7 @@ export interface GitHubProjectCreateRendererProps {
onSelectRepository: (key: string) => void;
organizations: GithubOrganization[];
repositories?: GithubRepository[];
- repositoryPaging: T.Paging;
+ repositoryPaging: Paging;
searchQuery: string;
selectedOrganization?: GithubOrganization;
selectedRepository?: GithubRepository;
diff --git a/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreate.tsx b/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreate.tsx
index f84bd1a47f0..91702fe8295 100644
--- a/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreate.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreate.tsx
@@ -22,6 +22,7 @@ import { WithRouterProps } from 'react-router';
import { getGitlabProjects, importGitlabProject } from '../../../api/alm-integrations';
import { GitlabProject } from '../../../types/alm-integration';
import { AlmSettingsInstance } from '../../../types/alm-settings';
+import { Paging } from '../../../types/types';
import GitlabProjectCreateRenderer from './GitlabProjectCreateRenderer';
interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
@@ -36,7 +37,7 @@ interface State {
loading: boolean;
loadingMore: boolean;
projects?: GitlabProject[];
- projectsPaging: T.Paging;
+ projectsPaging: Paging;
resetPat: boolean;
searching: boolean;
searchQuery: string;
diff --git a/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreateRenderer.tsx b/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreateRenderer.tsx
index 2b2e761a9d1..309fae339d4 100644
--- a/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreateRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/GitlabProjectCreateRenderer.tsx
@@ -22,6 +22,7 @@ import { translate } from '../../../helpers/l10n';
import { getBaseUrl } from '../../../helpers/system';
import { GitlabProject } from '../../../types/alm-integration';
import { AlmKeys, AlmSettingsInstance } from '../../../types/alm-settings';
+import { Paging } from '../../../types/types';
import CreateProjectPageHeader from './CreateProjectPageHeader';
import GitlabProjectSelectionForm from './GitlabProjectSelectionForm';
import PersonalAccessTokenForm from './PersonalAccessTokenForm';
@@ -37,7 +38,7 @@ export interface GitlabProjectCreateRendererProps {
onPersonalAccessTokenCreated: () => void;
onSearch: (searchQuery: string) => void;
projects?: GitlabProject[];
- projectsPaging: T.Paging;
+ projectsPaging: Paging;
resetPat: boolean;
searching: boolean;
searchQuery: string;
diff --git a/server/sonar-web/src/main/js/apps/create/project/GitlabProjectSelectionForm.tsx b/server/sonar-web/src/main/js/apps/create/project/GitlabProjectSelectionForm.tsx
index ed94e6ee0e2..94b5ef613a0 100644
--- a/server/sonar-web/src/main/js/apps/create/project/GitlabProjectSelectionForm.tsx
+++ b/server/sonar-web/src/main/js/apps/create/project/GitlabProjectSelectionForm.tsx
@@ -33,6 +33,7 @@ import { translate } from '../../../helpers/l10n';
import { getProjectUrl } from '../../../helpers/urls';
import { GitlabProject } from '../../../types/alm-integration';
import { ComponentQualifier } from '../../../types/component';
+import { Paging } from '../../../types/types';
import { CreateProjectModes } from './types';
export interface GitlabProjectSelectionFormProps {
@@ -42,7 +43,7 @@ export interface GitlabProjectSelectionFormProps {
onLoadMore: () => void;
onSearch: (searchQuery: string) => void;
projects?: GitlabProject[];
- projectsPaging: T.Paging;
+ projectsPaging: Paging;
searching: boolean;
searchQuery: string;
}
diff --git a/server/sonar-web/src/main/js/apps/documentation/__tests__/pages-test.ts b/server/sonar-web/src/main/js/apps/documentation/__tests__/pages-test.ts
index 48b136593c8..5ba0759d146 100644
--- a/server/sonar-web/src/main/js/apps/documentation/__tests__/pages-test.ts
+++ b/server/sonar-web/src/main/js/apps/documentation/__tests__/pages-test.ts
@@ -20,6 +20,7 @@
/* eslint-disable no-console */
import { filterContent, ParsedContent } from '../../../helpers/markdown';
import { mockDocumentationMarkdown } from '../../../helpers/testMocks';
+import { Dict } from '../../../types/types';
jest.mock('remark', () => () => ({
parse: jest.fn().mockReturnValue({})
@@ -92,7 +93,7 @@ it('should correctly handle overrides (replace & add)', () => {
key: 'tata'
};
- const overrides: T.Dict<ParsedContent> = {};
+ const overrides: Dict<ParsedContent> = {};
overrides[foo.url] = { frontmatter: overrideFooDoc, content: overrideFooDoc.content };
overrides[`analysis/languages/${newDoc.key}`] = { frontmatter: newDoc, content: newDoc.content };
const pages = getPages(overrides);
@@ -119,7 +120,7 @@ it('should not break the whole doc when one page cannot be parsed', () => {
console.error = originalConsoleError;
});
-function getPages(overrides: T.Dict<ParsedContent> = {}) {
+function getPages(overrides: Dict<ParsedContent> = {}) {
// This allows the use of out-of-scope data inside jest.mock
// Usually, it is impossible as jest.mock'ed module is hoisted on the top of the file
return jest.requireActual('../pages').default(overrides);
diff --git a/server/sonar-web/src/main/js/apps/documentation/components/App.tsx b/server/sonar-web/src/main/js/apps/documentation/components/App.tsx
index c7847f7656c..254518e5e17 100644
--- a/server/sonar-web/src/main/js/apps/documentation/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/documentation/components/App.tsx
@@ -34,6 +34,7 @@ import { ParsedContent, separateFrontMatter } from '../../../helpers/markdown';
import { addSideBarClass, removeSideBarClass } from '../../../helpers/pages';
import { isDefined } from '../../../helpers/types';
import { InstalledPlugin, PluginType } from '../../../types/plugins';
+import { Dict } from '../../../types/types';
import { getUrlsList } from '../navTreeUtils';
import getPages from '../pages';
import '../styles.css';
@@ -121,7 +122,7 @@ export default class App extends React.PureComponent<Props, State> {
path => regex.test(path) && path !== `/${LANGUAGES_BASE_URL}/overview/`
);
- const parsedContent: T.Dict<ParsedContent> = {};
+ const parsedContent: Dict<ParsedContent> = {};
pluginsWithDoc.filter(isDefined).forEach(plugin => {
const parsed = separateFrontMatter(plugin.content);
diff --git a/server/sonar-web/src/main/js/apps/documentation/components/SearchResultEntry.tsx b/server/sonar-web/src/main/js/apps/documentation/components/SearchResultEntry.tsx
index ae85ebc33fb..a799e7d92f0 100644
--- a/server/sonar-web/src/main/js/apps/documentation/components/SearchResultEntry.tsx
+++ b/server/sonar-web/src/main/js/apps/documentation/components/SearchResultEntry.tsx
@@ -20,11 +20,12 @@
import classNames from 'classnames';
import * as React from 'react';
import { Link } from 'react-router';
+import { Dict } from '../../../types/types';
import { cutWords, DocumentationEntry, highlightMarks } from '../utils';
export interface SearchResult {
exactMatch?: boolean;
- highlights: T.Dict<[number, number][]>;
+ highlights: Dict<[number, number][]>;
longestTerm: string;
page: DocumentationEntry;
query: string;
diff --git a/server/sonar-web/src/main/js/apps/documentation/components/SearchResults.tsx b/server/sonar-web/src/main/js/apps/documentation/components/SearchResults.tsx
index 906ddfba954..61eae9447f1 100644
--- a/server/sonar-web/src/main/js/apps/documentation/components/SearchResults.tsx
+++ b/server/sonar-web/src/main/js/apps/documentation/components/SearchResults.tsx
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import { DocNavigationItem } from 'Docs/@types/types';
+import { Dict, DocNavigationItem } from 'Docs/@types/types';
import { sortBy } from 'lodash';
import lunr, { LunrBuilder, LunrIndex, LunrToken } from 'lunr';
import * as React from 'react';
@@ -68,7 +68,7 @@ export default class SearchResults extends React.PureComponent<Props> {
return undefined;
}
- const highlights: T.Dict<[number, number][]> = {};
+ const highlights: Dict<[number, number][]> = {};
let longestTerm = '';
let exactMatch = false;
diff --git a/server/sonar-web/src/main/js/apps/documentation/pages.ts b/server/sonar-web/src/main/js/apps/documentation/pages.ts
index 47a77d52f74..be10bbc1312 100644
--- a/server/sonar-web/src/main/js/apps/documentation/pages.ts
+++ b/server/sonar-web/src/main/js/apps/documentation/pages.ts
@@ -20,12 +20,11 @@
import remark from 'remark';
import visit from 'unist-util-visit';
import { filterContent, ParsedContent, separateFrontMatter } from '../../helpers/markdown';
+import { Dict } from '../../types/types';
import Docs from './documentation.directory-loader';
import { DocumentationEntry, DocumentationEntryScope } from './utils';
-export default function getPages(
- parsedOverrides: T.Dict<ParsedContent> = {}
-): DocumentationEntry[] {
+export default function getPages(parsedOverrides: Dict<ParsedContent> = {}): DocumentationEntry[] {
// Get entries, merge with overrides if applicable.
const pages = ((Docs as unknown) as Array<{ content: string; path: string }>).map(file => {
let parsed = separateFrontMatter(file.content);
diff --git a/server/sonar-web/src/main/js/apps/groups/components/App.tsx b/server/sonar-web/src/main/js/apps/groups/components/App.tsx
index efa8eeb4429..3a164bc7c5a 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/App.tsx
@@ -25,17 +25,18 @@ import ListFooter from '../../../components/controls/ListFooter';
import SearchBox from '../../../components/controls/SearchBox';
import { translate } from '../../../helpers/l10n';
import { omitNil } from '../../../helpers/request';
+import { Group, Paging } from '../../../types/types';
import DeleteForm from './DeleteForm';
import Form from './Form';
import Header from './Header';
import List from './List';
interface State {
- groups?: T.Group[];
- editedGroup?: T.Group;
- groupToBeDeleted?: T.Group;
+ groups?: Group[];
+ editedGroup?: Group;
+ groupToBeDeleted?: Group;
loading: boolean;
- paging?: T.Paging;
+ paging?: Paging;
query: string;
}
@@ -124,11 +125,11 @@ export default class App extends React.PureComponent<{}, State> {
this.setState({ editedGroup: undefined });
};
- openDeleteForm = (group: T.Group) => {
+ openDeleteForm = (group: Group) => {
this.setState({ groupToBeDeleted: group });
};
- openEditForm = (group: T.Group) => {
+ openEditForm = (group: Group) => {
this.setState({ editedGroup: group });
};
diff --git a/server/sonar-web/src/main/js/apps/groups/components/DeleteForm.tsx b/server/sonar-web/src/main/js/apps/groups/components/DeleteForm.tsx
index bae62700da5..52f865ec209 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/DeleteForm.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/DeleteForm.tsx
@@ -22,9 +22,10 @@ import { ResetButtonLink, SubmitButton } from '../../../components/controls/butt
import SimpleModal from '../../../components/controls/SimpleModal';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Group } from '../../../types/types';
interface Props {
- group: T.Group;
+ group: Group;
onClose: () => void;
onSubmit: () => Promise<void>;
}
diff --git a/server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx b/server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx
index 59f29c29d74..76b0bb20941 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/EditMembers.tsx
@@ -21,10 +21,11 @@ import * as React from 'react';
import { ButtonIcon } from '../../../components/controls/buttons';
import BulletListIcon from '../../../components/icons/BulletListIcon';
import { translate } from '../../../helpers/l10n';
+import { Group } from '../../../types/types';
import EditMembersModal from './EditMembersModal';
interface Props {
- group: T.Group;
+ group: Group;
onEdit: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/groups/components/EditMembersModal.tsx b/server/sonar-web/src/main/js/apps/groups/components/EditMembersModal.tsx
index 619ffe94e34..e508954682c 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/EditMembersModal.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/EditMembersModal.tsx
@@ -27,16 +27,17 @@ import SelectList, {
SelectListSearchParams
} from '../../../components/controls/SelectList';
import { translate } from '../../../helpers/l10n';
+import { Group, UserSelected } from '../../../types/types';
interface Props {
- group: T.Group;
+ group: Group;
onClose: () => void;
}
interface State {
lastSearchParams?: SelectListSearchParams;
needToReload: boolean;
- users: T.UserSelected[];
+ users: UserSelected[];
usersTotalCount?: number;
selectedUsers: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/groups/components/Form.tsx b/server/sonar-web/src/main/js/apps/groups/components/Form.tsx
index 2efab620f3e..da5cc8c3f2a 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/Form.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/Form.tsx
@@ -24,10 +24,11 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
+import { Group } from '../../../types/types';
interface Props {
confirmButtonText: string;
- group?: T.Group;
+ group?: Group;
header: string;
onClose: () => void;
onSubmit: (data: { description: string; name: string }) => Promise<void>;
diff --git a/server/sonar-web/src/main/js/apps/groups/components/List.tsx b/server/sonar-web/src/main/js/apps/groups/components/List.tsx
index 789811564c1..29670491a78 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/List.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/List.tsx
@@ -20,12 +20,13 @@
import { sortBy } from 'lodash';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { Group } from '../../../types/types';
import ListItem from './ListItem';
interface Props {
- groups: T.Group[];
- onDelete: (group: T.Group) => void;
- onEdit: (group: T.Group) => void;
+ groups: Group[];
+ onDelete: (group: Group) => void;
+ onEdit: (group: Group) => void;
onEditMembers: () => void;
showAnyone: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/groups/components/ListItem.tsx b/server/sonar-web/src/main/js/apps/groups/components/ListItem.tsx
index 4e90fd62a63..ea3a33fe7b3 100644
--- a/server/sonar-web/src/main/js/apps/groups/components/ListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/groups/components/ListItem.tsx
@@ -23,12 +23,13 @@ import ActionsDropdown, {
ActionsDropdownItem
} from '../../../components/controls/ActionsDropdown';
import { translate } from '../../../helpers/l10n';
+import { Group } from '../../../types/types';
import EditMembers from './EditMembers';
export interface ListItemProps {
- group: T.Group;
- onDelete: (group: T.Group) => void;
- onEdit: (group: T.Group) => void;
+ group: Group;
+ onDelete: (group: Group) => void;
+ onEdit: (group: Group) => void;
onEditMembers: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx b/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx
index d0565a11fd2..cc521d50394 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/AppContainer.tsx
@@ -25,6 +25,7 @@ import { parseIssueFromResponse } from '../../../helpers/issues';
import { fetchBranchStatus } from '../../../store/rootActions';
import { getCurrentUser, Store } from '../../../store/rootReducer';
import { FetchIssuesPromise } from '../../../types/issues';
+import { RawQuery } from '../../../types/types';
const IssuesAppContainer = lazyLoadComponent(() => import('./IssuesApp'), 'IssuesAppContainer');
@@ -33,7 +34,7 @@ const mapStateToProps = (state: Store) => ({
fetchIssues
});
-const fetchIssues = (query: T.RawQuery) => {
+const fetchIssues = (query: RawQuery) => {
return searchIssues({
...query,
additionalFields: '_all',
diff --git a/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx b/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx
index 3e129863e3e..99005d400ce 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/BulkChangeModal.tsx
@@ -37,6 +37,7 @@ import { Alert } from '../../../components/ui/Alert';
import Avatar from '../../../components/ui/Avatar';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { isLoggedIn, isUserActive } from '../../../helpers/users';
+import { Component, CurrentUser, Dict, Issue, IssueType, Paging } from '../../../types/types';
import { searchAssignees } from '../utils';
interface AssigneeOption {
@@ -52,9 +53,9 @@ interface TagOption {
}
interface Props {
- component: T.Component | undefined;
- currentUser: T.CurrentUser;
- fetchIssues: (x: {}) => Promise<{ issues: T.Issue[]; paging: T.Paging }>;
+ component: Component | undefined;
+ currentUser: CurrentUser;
+ fetchIssues: (x: {}) => Promise<{ issues: Issue[]; paging: Paging }>;
onClose: () => void;
onDone: () => void;
}
@@ -72,10 +73,10 @@ interface FormFields {
interface State extends FormFields {
initialTags: Array<{ label: string; value: string }>;
- issues: T.Issue[];
+ issues: Issue[];
// used for initial loading of issues
loading: boolean;
- paging?: T.Paging;
+ paging?: Paging;
// used when submitting a form
submitting: boolean;
}
@@ -237,8 +238,8 @@ export default class BulkChangeModal extends React.PureComponent<Props, State> {
);
};
- getAvailableTransitions(issues: T.Issue[]) {
- const transitions: T.Dict<number> = {};
+ getAvailableTransitions(issues: Issue[]) {
+ const transitions: Dict<number> = {};
issues.forEach(issue => {
if (issue.transitions) {
issue.transitions.forEach(t => {
@@ -345,7 +346,7 @@ export default class BulkChangeModal extends React.PureComponent<Props, State> {
return null;
}
- const types: T.IssueType[] = ['BUG', 'VULNERABILITY', 'CODE_SMELL'];
+ const types: IssueType[] = ['BUG', 'VULNERABILITY', 'CODE_SMELL'];
const options = types.map(type => ({ label: translate('issue.type', type), value: type }));
const optionRenderer = (option: { label: string; value: string }) => (
@@ -558,7 +559,7 @@ export default class BulkChangeModal extends React.PureComponent<Props, State> {
}
function hasAction(action: string) {
- return (issue: T.Issue) => issue.actions && issue.actions.includes(action);
+ return (issue: Issue) => issue.actions && issue.actions.includes(action);
}
function promptCreateTag(label: string) {
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
index c9c8abcd276..1265aa1c6bc 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
@@ -23,11 +23,12 @@ import QualifierIcon from '../../../components/icons/QualifierIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { collapsePath, limitComponentName } from '../../../helpers/path';
import { ComponentQualifier, isView } from '../../../types/component';
+import { Component, Issue } from '../../../types/types';
import { getSelectedLocation } from '../utils';
interface Props {
- component?: T.Component;
- issue: T.Issue;
+ component?: Component;
+ issue: Issue;
selectedFlowIndex?: number;
selectedLocationIndex?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx b/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
index 474aacb0a11..26583678441 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
@@ -62,6 +62,15 @@ import {
ReferencedRule
} from '../../../types/issues';
import { SecurityStandard } from '../../../types/security';
+import {
+ Component,
+ CurrentUser,
+ Dict,
+ Issue,
+ Paging,
+ RawQuery,
+ UserBase
+} from '../../../types/types';
import * as actions from '../actions';
import ConciseIssuesList from '../conciseIssuesList/ConciseIssuesList';
import ConciseIssuesListHeader from '../conciseIssuesList/ConciseIssuesListHeader';
@@ -92,10 +101,10 @@ import PageActions from './PageActions';
interface Props {
branchLike?: BranchLike;
- component?: T.Component;
- currentUser: T.CurrentUser;
+ component?: Component;
+ currentUser: CurrentUser;
fetchBranchStatus: (branchLike: BranchLike, projectKey: string) => void;
- fetchIssues: (query: T.RawQuery) => Promise<FetchIssuesPromise>;
+ fetchIssues: (query: RawQuery) => Promise<FetchIssuesPromise>;
location: Location;
onBranchesChange?: () => void;
router: Pick<Router, 'push' | 'replace'>;
@@ -107,23 +116,23 @@ export interface State {
checkAll?: boolean;
checked: string[];
effortTotal?: number;
- facets: T.Dict<Facet>;
- issues: T.Issue[];
+ facets: Dict<Facet>;
+ issues: Issue[];
loading: boolean;
- loadingFacets: T.Dict<boolean>;
+ loadingFacets: Dict<boolean>;
loadingMore: boolean;
locationsNavigator: boolean;
myIssues: boolean;
- openFacets: T.Dict<boolean>;
- openIssue?: T.Issue;
+ openFacets: Dict<boolean>;
+ openIssue?: Issue;
openPopup?: { issue: string; name: string };
- paging?: T.Paging;
+ paging?: Paging;
query: Query;
- referencedComponentsById: T.Dict<ReferencedComponent>;
- referencedComponentsByKey: T.Dict<ReferencedComponent>;
- referencedLanguages: T.Dict<ReferencedLanguage>;
- referencedRules: T.Dict<ReferencedRule>;
- referencedUsers: T.Dict<T.UserBase>;
+ referencedComponentsById: Dict<ReferencedComponent>;
+ referencedComponentsByKey: Dict<ReferencedComponent>;
+ referencedLanguages: Dict<ReferencedLanguage>;
+ referencedRules: Dict<ReferencedRule>;
+ referencedUsers: Dict<UserBase>;
selected?: string;
selectedFlowIndex?: number;
selectedLocationIndex?: number;
@@ -301,7 +310,7 @@ export default class App extends React.PureComponent<Props, State> {
return index !== -1 ? index : undefined;
}
- getOpenIssue = (props: Props, issues: T.Issue[]) => {
+ getOpenIssue = (props: Props, issues: Issue[]) => {
const open = getOpen(props.location.query);
return open ? issues.find(issue => issue.key === open) : undefined;
};
@@ -398,7 +407,7 @@ export default class App extends React.PureComponent<Props, State> {
createdAfterIncludesTime = () => Boolean(this.props.location.query.createdAfter?.includes('T'));
- fetchIssues = (additional: T.RawQuery, requestFacets = false): Promise<FetchIssuesPromise> => {
+ fetchIssues = (additional: RawQuery, requestFacets = false): Promise<FetchIssuesPromise> => {
const { component } = this.props;
const { myIssues, openFacets, query } = this.state;
@@ -408,7 +417,7 @@ export default class App extends React.PureComponent<Props, State> {
.join(',')
: undefined;
- const parameters: T.Dict<string | undefined> = {
+ const parameters: Dict<string | undefined> = {
...getBranchLikeQuery(this.props.branchLike),
componentKeys: component && component.key,
s: 'FILE_LINE',
@@ -441,7 +450,7 @@ export default class App extends React.PureComponent<Props, State> {
this.setState({ checked: [], loading: true });
if (openIssueKey !== undefined) {
- fetchPromise = this.fetchIssuesUntil(1, (pageIssues: T.Issue[], paging: T.Paging) => {
+ fetchPromise = this.fetchIssuesUntil(1, (pageIssues: Issue[], paging: Paging) => {
if (
paging.total <= paging.pageIndex * paging.pageSize ||
paging.pageIndex * paging.pageSize >= MAX_INITAL_FETCH
@@ -497,9 +506,9 @@ export default class App extends React.PureComponent<Props, State> {
fetchIssuesUntil = (
page: number,
- done: (pageIssues: T.Issue[], paging: T.Paging) => boolean
+ done: (pageIssues: Issue[], paging: Paging) => boolean
): Promise<FetchIssuesPromise> => {
- const recursiveFetch = (p: number, prevIssues: T.Issue[]): Promise<FetchIssuesPromise> => {
+ const recursiveFetch = (p: number, prevIssues: Issue[]): Promise<FetchIssuesPromise> => {
return this.fetchIssuesPage(p).then(({ issues: pageIssues, paging, ...other }) => {
const issues = [...prevIssues, ...pageIssues];
return done(pageIssues, paging)
@@ -546,9 +555,9 @@ export default class App extends React.PureComponent<Props, State> {
return Promise.reject(undefined);
}
- const isSameComponent = (issue: T.Issue) => issue.component === openIssue.component;
+ const isSameComponent = (issue: Issue) => issue.component === openIssue.component;
- const done = (pageIssues: T.Issue[], p: T.Paging) => {
+ const done = (pageIssues: Issue[], p: Paging) => {
const lastIssue = pageIssues[pageIssues.length - 1];
if (p.total <= p.pageIndex * p.pageSize) {
return true;
@@ -623,12 +632,12 @@ export default class App extends React.PureComponent<Props, State> {
getCheckedIssues = () => {
const issues = this.state.checked
.map(checked => this.state.issues.find(issue => issue.key === checked))
- .filter((issue): issue is T.Issue => issue !== undefined);
+ .filter((issue): issue is Issue => issue !== undefined);
const paging = { pageIndex: 1, pageSize: issues.length, total: issues.length };
return Promise.resolve({ issues, paging });
};
- getButtonLabel = (checked: string[], checkAll = false, paging?: T.Paging) => {
+ getButtonLabel = (checked: string[], checkAll = false, paging?: Paging) => {
if (checked.length === 0) {
return translate('bulk_change');
}
@@ -768,7 +777,7 @@ export default class App extends React.PureComponent<Props, State> {
}));
};
- handleIssueChange = (issue: T.Issue) => {
+ handleIssueChange = (issue: Issue) => {
this.refreshBranchStatus();
this.setState(state => ({
issues: state.issues.map(candidate => (candidate.key === issue.key ? issue : candidate)),
@@ -944,7 +953,7 @@ export default class App extends React.PureComponent<Props, State> {
);
}
- renderSide(openIssue: T.Issue | undefined) {
+ renderSide(openIssue: Issue | undefined) {
const { canBrowseAllChildProjects, qualifier = ComponentQualifier.Project } =
this.props.component || {};
return (
@@ -1044,8 +1053,8 @@ export default class App extends React.PureComponent<Props, State> {
paging,
selectedIndex
}: {
- openIssue: T.Issue | undefined;
- paging: T.Paging | undefined;
+ openIssue: Issue | undefined;
+ paging: Paging | undefined;
selectedIndex: number | undefined;
}) {
return openIssue ? (
diff --git a/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx b/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
index 783876c7ad3..29866223bda 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
@@ -19,21 +19,22 @@
*/
import * as React from 'react';
import { BranchLike } from '../../../types/branch-like';
+import { Component, Issue } from '../../../types/types';
import { Query, scrollToIssue } from '../utils';
import ListItem from './ListItem';
interface Props {
branchLike: BranchLike | undefined;
checked: string[];
- component: T.Component | undefined;
- issues: T.Issue[];
+ component: Component | undefined;
+ issues: Issue[];
onFilterChange: (changes: Partial<Query>) => void;
- onIssueChange: (issue: T.Issue) => void;
+ onIssueChange: (issue: Issue) => void;
onIssueCheck: ((issueKey: string) => void) | undefined;
onIssueClick: (issueKey: string) => void;
onPopupToggle: (issue: string, popupName: string, open?: boolean) => void;
openPopup: { issue: string; name: string } | undefined;
- selectedIssue: T.Issue | undefined;
+ selectedIssue: Issue | undefined;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/issues/components/IssuesSourceViewer.tsx b/server/sonar-web/src/main/js/apps/issues/components/IssuesSourceViewer.tsx
index f09aea4e498..caf7b66f245 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/IssuesSourceViewer.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/IssuesSourceViewer.tsx
@@ -21,18 +21,19 @@ import * as React from 'react';
import SourceViewer from '../../../components/SourceViewer/SourceViewer';
import { scrollToElement } from '../../../helpers/scrolling';
import { BranchLike } from '../../../types/branch-like';
+import { Issue } from '../../../types/types';
import CrossComponentSourceViewer from '../crossComponentSourceViewer/CrossComponentSourceViewer';
import { getLocations, getSelectedLocation } from '../utils';
interface Props {
branchLike: BranchLike | undefined;
- issues: T.Issue[];
- loadIssues: (component: string, from: number, to: number) => Promise<T.Issue[]>;
+ issues: Issue[];
+ loadIssues: (component: string, from: number, to: number) => Promise<Issue[]>;
locationsNavigator: boolean;
- onIssueChange: (issue: T.Issue) => void;
+ onIssueChange: (issue: Issue) => void;
onIssueSelect: (issueKey: string) => void;
onLocationSelect: (index: number) => void;
- openIssue: T.Issue;
+ openIssue: Issue;
selectedFlowIndex: number | undefined;
selectedLocationIndex: number | undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx b/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
index 9900b6f07ea..685f4ac03e6 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
@@ -20,26 +20,27 @@
import * as React from 'react';
import Issue from '../../../components/issue/Issue';
import { BranchLike } from '../../../types/branch-like';
+import { Component, Issue as TypeIssue } from '../../../types/types';
import { Query } from '../utils';
import ComponentBreadcrumbs from './ComponentBreadcrumbs';
interface Props {
branchLike: BranchLike | undefined;
checked: boolean;
- component: T.Component | undefined;
- issue: T.Issue;
- onChange: (issue: T.Issue) => void;
+ component: Component | undefined;
+ issue: TypeIssue;
+ onChange: (issue: TypeIssue) => void;
onCheck: ((issueKey: string) => void) | undefined;
onClick: (issueKey: string) => void;
onFilterChange: (changes: Partial<Query>) => void;
onPopupToggle: (issue: string, popupName: string, open?: boolean) => void;
openPopup: string | undefined;
- previousIssue: T.Issue | undefined;
+ previousIssue: TypeIssue | undefined;
selected: boolean;
}
export default class ListItem extends React.PureComponent<Props> {
- handleFilter = (property: string, issue: T.Issue) => {
+ handleFilter = (property: string, issue: TypeIssue) => {
const { onFilterChange } = this.props;
const issuesReset = { issues: [] };
diff --git a/server/sonar-web/src/main/js/apps/issues/components/PageActions.tsx b/server/sonar-web/src/main/js/apps/issues/components/PageActions.tsx
index 9437e70468b..579904469c5 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/PageActions.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/PageActions.tsx
@@ -22,13 +22,14 @@ import HomePageSelect from '../../../components/controls/HomePageSelect';
import PageShortcutsTooltip from '../../../components/ui/PageShortcutsTooltip';
import { translate } from '../../../helpers/l10n';
import { isSonarCloud } from '../../../helpers/system';
+import { Paging } from '../../../types/types';
import IssuesCounter from './IssuesCounter';
import TotalEffort from './TotalEffort';
export interface PageActionsProps {
canSetHome: boolean;
effortTotal: number | undefined;
- paging?: T.Paging;
+ paging?: Paging;
selectedIndex?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx b/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx
index 58c14d823fb..89a73f20aa3 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/BulkChangeModal-test.tsx
@@ -24,6 +24,7 @@ import { SubmitButton } from '../../../../components/controls/buttons';
import SelectLegacy from '../../../../components/controls/SelectLegacy';
import { mockIssue } from '../../../../helpers/testMocks';
import { change, waitAndUpdate } from '../../../../helpers/testUtils';
+import { Issue } from '../../../../types/types';
import BulkChangeModal, { MAX_PAGE_SIZE } from '../BulkChangeModal';
jest.mock('../../../../api/issues', () => ({
@@ -73,7 +74,7 @@ it('should display form when issues are present', async () => {
});
it('should display warning when too many issues are passed', async () => {
- const issues: T.Issue[] = [];
+ const issues: Issue[] = [];
for (let i = MAX_PAGE_SIZE + 1; i > 0; i--) {
issues.push(mockIssue());
}
@@ -85,7 +86,7 @@ it('should display warning when too many issues are passed', async () => {
});
it('should properly handle the search for assignee', async () => {
- const issues: T.Issue[] = [];
+ const issues: Issue[] = [];
for (let i = MAX_PAGE_SIZE + 1; i > 0; i--) {
issues.push(mockIssue());
}
@@ -127,7 +128,7 @@ it('should disable the submit button unless some change is configured', async ()
});
});
-const getWrapper = (issues: T.Issue[]) => {
+const getWrapper = (issues: Issue[]) => {
return shallow<BulkChangeModal>(
<BulkChangeModal
component={undefined}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesApp-test.tsx b/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesApp-test.tsx
index 404e5859b82..35971e463b5 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesApp-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/IssuesApp-test.tsx
@@ -40,6 +40,7 @@ import {
} from '../../../../helpers/testMocks';
import { KEYCODE_MAP, keydown, waitAndUpdate } from '../../../../helpers/testUtils';
import { ComponentQualifier } from '../../../../types/component';
+import { Issue, Paging } from '../../../../types/types';
import {
disableLocationsNavigator,
enableLocationsNavigator,
@@ -402,7 +403,7 @@ it('should correctly handle filter changes', () => {
});
it('should fetch issues until defined', async () => {
- const mockDone = (_: T.Issue[], paging: T.Paging) =>
+ const mockDone = (_: Issue[], paging: Paging) =>
paging.total <= paging.pageIndex * paging.pageSize;
const wrapper = shallowRender({
@@ -504,7 +505,7 @@ it('should refresh branch status if issues are updated', async () => {
const instance = wrapper.instance();
await waitAndUpdate(wrapper);
- const updatedIssue: T.Issue = { ...ISSUES[0], type: 'SECURITY_HOTSPOT' };
+ const updatedIssue: Issue = { ...ISSUES[0], type: 'SECURITY_HOTSPOT' };
instance.handleIssueChange(updatedIssue);
expect(wrapper.state().issues).toEqual([updatedIssue, ISSUES[1], ISSUES[2], ISSUES[3]]);
expect(fetchBranchStatus).toBeCalledWith(branchLike, component.key);
@@ -520,7 +521,7 @@ it('should update the open issue when it is changed', async () => {
wrapper.setState({ openIssue: ISSUES[0] });
- const updatedIssue: T.Issue = { ...ISSUES[0], type: 'SECURITY_HOTSPOT' };
+ const updatedIssue: Issue = { ...ISSUES[0], type: 'SECURITY_HOTSPOT' };
wrapper.instance().handleIssueChange(updatedIssue);
expect(wrapper.state().openIssue).toBe(updatedIssue);
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssue.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssue.tsx
index 5ac85daa5cb..78c07e48268 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssue.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssue.tsx
@@ -18,15 +18,16 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { Issue } from '../../../types/types';
import ConciseIssueBox from './ConciseIssueBox';
import ConciseIssueComponent from './ConciseIssueComponent';
interface Props {
- issue: T.Issue;
+ issue: Issue;
onFlowSelect: (index: number) => void;
onLocationSelect: (index: number) => void;
onSelect: (issueKey: string) => void;
- previousIssue: T.Issue | undefined;
+ previousIssue: Issue | undefined;
scroll: (element: Element) => void;
selected: boolean;
selectedFlowIndex: number | undefined;
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueBox.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueBox.tsx
index a63e8a7f159..e9691262f3b 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueBox.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueBox.tsx
@@ -20,11 +20,12 @@
import classNames from 'classnames';
import * as React from 'react';
import TypeHelper from '../../../components/shared/TypeHelper';
+import { Issue } from '../../../types/types';
import ConciseIssueLocations from './ConciseIssueLocations';
import ConciseIssueLocationsNavigator from './ConciseIssueLocationsNavigator';
interface Props {
- issue: T.Issue;
+ issue: Issue;
onClick: (issueKey: string) => void;
onFlowSelect: (index: number) => void;
onLocationSelect: (index: number) => void;
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocations.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocations.tsx
index fe1b4cfad28..cd6a95ab52e 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocations.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocations.tsx
@@ -19,10 +19,11 @@
*/
import * as React from 'react';
import { Button } from '../../../components/controls/buttons';
+import { Issue } from '../../../types/types';
import ConciseIssueLocationBadge from './ConciseIssueLocationBadge';
interface Props {
- issue: Pick<T.Issue, 'flows' | 'secondaryLocations'>;
+ issue: Pick<Issue, 'flows' | 'secondaryLocations'>;
onFlowSelect: (index: number) => void;
selectedFlowIndex: number | undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocationsNavigator.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocationsNavigator.tsx
index 7d65a636711..1dc1ef98f20 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocationsNavigator.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssueLocationsNavigator.tsx
@@ -19,12 +19,13 @@
*/
import { uniq } from 'lodash';
import * as React from 'react';
+import { Issue } from '../../../types/types';
import { getLocations } from '../utils';
import ConciseIssueLocationsNavigatorLocation from './ConciseIssueLocationsNavigatorLocation';
import CrossFileLocationsNavigator from './CrossFileLocationsNavigator';
interface Props {
- issue: Pick<T.Issue, 'component' | 'key' | 'flows' | 'secondaryLocations' | 'type'>;
+ issue: Pick<Issue, 'component' | 'key' | 'flows' | 'secondaryLocations' | 'type'>;
onLocationSelect: (index: number) => void;
scroll: (element: Element) => void;
selectedFlowIndex: number | undefined;
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssuesList.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssuesList.tsx
index 77058d1e9b4..fc05ac04ee5 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssuesList.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/ConciseIssuesList.tsx
@@ -19,10 +19,11 @@
*/
import * as React from 'react';
import { scrollToElement } from '../../../helpers/scrolling';
+import { Issue } from '../../../types/types';
import ConciseIssue from './ConciseIssue';
interface Props {
- issues: T.Issue[];
+ issues: Issue[];
onFlowSelect: (index: number) => void;
onIssueSelect: (issueKey: string) => void;
onLocationSelect: (index: number) => void;
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/CrossFileLocationsNavigator.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/CrossFileLocationsNavigator.tsx
index 09d1a4db6d7..5b920f4e1b7 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/CrossFileLocationsNavigator.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/CrossFileLocationsNavigator.tsx
@@ -20,11 +20,12 @@
import * as React from 'react';
import { translateWithParameters } from '../../../helpers/l10n';
import { collapsePath } from '../../../helpers/path';
+import { FlowLocation, Issue } from '../../../types/types';
import ConciseIssueLocationsNavigatorLocation from './ConciseIssueLocationsNavigatorLocation';
interface Props {
- issue: Pick<T.Issue, 'key' | 'type'>;
- locations: T.FlowLocation[];
+ issue: Pick<Issue, 'key' | 'type'>;
+ locations: FlowLocation[];
onLocationSelect: (index: number) => void;
scroll: (element: Element) => void;
selectedLocationIndex: number | undefined;
@@ -38,7 +39,7 @@ interface LocationGroup {
component: string | undefined;
componentName: string | undefined;
firstLocationIndex: number;
- locations: T.FlowLocation[];
+ locations: FlowLocation[];
}
const MAX_PATH_LENGTH = 15;
@@ -69,10 +70,10 @@ export default class CrossFileLocationsNavigator extends React.PureComponent<Pro
this.setState({ collapsed: false });
};
- groupByFile = (locations: T.FlowLocation[]) => {
+ groupByFile = (locations: FlowLocation[]) => {
const groups: LocationGroup[] = [];
- let currentLocations: T.FlowLocation[] = [];
+ let currentLocations: FlowLocation[] = [];
let currentComponent: string | undefined;
let currentComponentName: string | undefined;
let currentFirstLocationIndex = 0;
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx
index fd259dfa26a..ffa5c92235a 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssue-test.tsx
@@ -19,9 +19,10 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { Issue } from '../../../../types/types';
import ConciseIssue from '../ConciseIssue';
-const issue: T.Issue = {
+const issue: Issue = {
actions: [],
component: '',
componentLongName: 'src/file.js',
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssueLocationsNavigator-test.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssueLocationsNavigator-test.tsx
index 454f5025682..8772152ab7b 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssueLocationsNavigator-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssueLocationsNavigator-test.tsx
@@ -20,23 +20,24 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { mockIssue } from '../../../../helpers/testMocks';
+import { FlowLocation } from '../../../../types/types';
import ConciseIssueLocationsNavigator from '../ConciseIssueLocationsNavigator';
-const location1: T.FlowLocation = {
+const location1: FlowLocation = {
component: 'foo',
componentName: 'src/foo.js',
msg: 'Do not use foo',
textRange: { startLine: 7, endLine: 7, startOffset: 5, endOffset: 8 }
};
-const location2: T.FlowLocation = {
+const location2: FlowLocation = {
component: 'foo',
componentName: 'src/foo.js',
msg: 'Do not use foo',
textRange: { startLine: 8, endLine: 8, startOffset: 0, endOffset: 5 }
};
-const location3: T.FlowLocation = {
+const location3: FlowLocation = {
component: 'bar',
componentName: 'src/bar.js',
msg: 'Do not use bar',
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssuesList-test.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssuesList-test.tsx
index 5627f897135..f8415993160 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssuesList-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/ConciseIssuesList-test.tsx
@@ -19,10 +19,11 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { Issue } from '../../../../types/types';
import ConciseIssuesList from '../ConciseIssuesList';
it('should render', () => {
- const issues = [{ key: 'foo' }, { key: 'bar' }] as T.Issue[];
+ const issues = [{ key: 'foo' }, { key: 'bar' }] as Issue[];
expect(
shallow(
<ConciseIssuesList
diff --git a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/CrossFileLocationsNavigator-test.tsx b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/CrossFileLocationsNavigator-test.tsx
index dd7a5f92199..020732012ee 100644
--- a/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/CrossFileLocationsNavigator-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/conciseIssuesList/__tests__/CrossFileLocationsNavigator-test.tsx
@@ -21,23 +21,24 @@ import { shallow } from 'enzyme';
import * as React from 'react';
import { mockFlowLocation } from '../../../../helpers/testMocks';
import { click } from '../../../../helpers/testUtils';
+import { FlowLocation } from '../../../../types/types';
import CrossFileLocationsNavigator from '../CrossFileLocationsNavigator';
-const location1: T.FlowLocation = {
+const location1: FlowLocation = {
component: 'foo',
componentName: 'src/foo.js',
msg: 'Do not use foo',
textRange: { startLine: 7, endLine: 7, startOffset: 5, endOffset: 8 }
};
-const location2: T.FlowLocation = {
+const location2: FlowLocation = {
component: 'foo',
componentName: 'src/foo.js',
msg: 'Do not use foo',
textRange: { startLine: 8, endLine: 8, startOffset: 0, endOffset: 5 }
};
-const location3: T.FlowLocation = {
+const location3: FlowLocation = {
component: 'bar',
componentName: 'src/bar.js',
msg: 'Do not use bar',
diff --git a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/ComponentSourceSnippetGroupViewer.tsx b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/ComponentSourceSnippetGroupViewer.tsx
index 17cf8de81ce..a57ae654bcb 100644
--- a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/ComponentSourceSnippetGroupViewer.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/ComponentSourceSnippetGroupViewer.tsx
@@ -26,6 +26,19 @@ import { locationsByLine } from '../../../components/SourceViewer/helpers/indexi
import SourceViewerHeaderSlim from '../../../components/SourceViewer/SourceViewerHeaderSlim';
import { getBranchLikeQuery } from '../../../helpers/branch-like';
import { BranchLike } from '../../../types/branch-like';
+import {
+ Dict,
+ Duplication,
+ ExpandDirection,
+ FlowLocation,
+ Issue as TypeIssue,
+ IssuesByLine,
+ LinearIssueLocation,
+ Snippet,
+ SnippetGroup,
+ SourceLine,
+ SourceViewerFile
+} from '../../../types/types';
import SnippetViewer from './SnippetViewer';
import {
createSnippets,
@@ -37,34 +50,34 @@ import {
interface Props {
branchLike: BranchLike | undefined;
- duplications?: T.Duplication[];
+ duplications?: Duplication[];
duplicationsByLine?: { [line: number]: number[] };
highlightedLocationMessage: { index: number; text: string | undefined } | undefined;
isLastOccurenceOfPrimaryComponent: boolean;
- issue: T.Issue;
+ issue: TypeIssue;
issuePopup?: { issue: string; name: string };
- issuesByLine: T.IssuesByLine;
+ issuesByLine: IssuesByLine;
lastSnippetGroup: boolean;
- loadDuplications: (component: string, line: T.SourceLine) => void;
- locations: T.FlowLocation[];
- onIssueChange: (issue: T.Issue) => void;
+ loadDuplications: (component: string, line: SourceLine) => void;
+ locations: FlowLocation[];
+ onIssueChange: (issue: TypeIssue) => void;
onIssuePopupToggle: (issue: string, popupName: string, open?: boolean) => void;
onLocationSelect: (index: number) => void;
renderDuplicationPopup: (
- component: T.SourceViewerFile,
+ component: SourceViewerFile,
index: number,
line: number
) => React.ReactNode;
scroll?: (element: HTMLElement, offset: number) => void;
- snippetGroup: T.SnippetGroup;
+ snippetGroup: SnippetGroup;
}
interface State {
- additionalLines: { [line: number]: T.SourceLine };
+ additionalLines: { [line: number]: SourceLine };
highlightedSymbols: string[];
loading: boolean;
- openIssuesByLine: T.Dict<boolean>;
- snippets: T.Snippet[];
+ openIssuesByLine: Dict<boolean>;
+ snippets: Snippet[];
}
export default class ComponentSourceSnippetGroupViewer extends React.PureComponent<Props, State> {
@@ -163,7 +176,7 @@ export default class ComponentSourceSnippetGroupViewer extends React.PureCompone
}
}
- expandBlock = (snippetIndex: number, direction: T.ExpandDirection): Promise<void> => {
+ expandBlock = (snippetIndex: number, direction: ExpandDirection): Promise<void> => {
const { branchLike, snippetGroup } = this.props;
const { key } = snippetGroup.component;
const { snippets } = this.state;
@@ -189,7 +202,7 @@ export default class ComponentSourceSnippetGroupViewer extends React.PureCompone
...getBranchLikeQuery(branchLike)
})
.then(lines =>
- lines.reduce((lineMap: T.Dict<T.SourceLine>, line) => {
+ lines.reduce((lineMap: Dict<SourceLine>, line) => {
line.coverageStatus = getCoverageStatus(line);
lineMap[line.line] = line;
return lineMap;
@@ -200,8 +213,8 @@ export default class ComponentSourceSnippetGroupViewer extends React.PureCompone
animateBlockExpansion(
snippetIndex: number,
- direction: T.ExpandDirection,
- newLinesMapped: T.Dict<T.SourceLine>
+ direction: ExpandDirection,
+ newLinesMapped: Dict<SourceLine>
): Promise<void> {
if (this.mounted) {
const { snippets } = this.state;
@@ -273,13 +286,13 @@ export default class ComponentSourceSnippetGroupViewer extends React.PureCompone
);
};
- handleOpenIssues = (line: T.SourceLine) => {
+ handleOpenIssues = (line: SourceLine) => {
this.setState(state => ({
openIssuesByLine: { ...state.openIssuesByLine, [line.line]: true }
}));
};
- handleCloseIssues = (line: T.SourceLine) => {
+ handleCloseIssues = (line: SourceLine) => {
this.setState(state => ({
openIssuesByLine: { ...state.openIssuesByLine, [line.line]: false }
}));
@@ -294,7 +307,7 @@ export default class ComponentSourceSnippetGroupViewer extends React.PureCompone
});
};
- loadDuplications = (line: T.SourceLine) => {
+ loadDuplications = (line: SourceLine) => {
this.props.loadDuplications(this.props.snippetGroup.component.key, line);
};
@@ -310,10 +323,10 @@ export default class ComponentSourceSnippetGroupViewer extends React.PureCompone
snippet
}: {
index: number;
- issuesByLine: T.IssuesByLine;
+ issuesByLine: IssuesByLine;
lastSnippetOfLastGroup: boolean;
- locationsByLine: { [line: number]: T.LinearIssueLocation[] };
- snippet: T.SourceLine[];
+ locationsByLine: { [line: number]: LinearIssueLocation[] };
+ snippet: SourceLine[];
}) {
return (
<SnippetViewer
diff --git a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/CrossComponentSourceViewerWrapper.tsx b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/CrossComponentSourceViewerWrapper.tsx
index 4b23e381d76..47da6b2d90a 100644
--- a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/CrossComponentSourceViewerWrapper.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/CrossComponentSourceViewerWrapper.tsx
@@ -39,16 +39,25 @@ import { WorkspaceContext } from '../../../components/workspace/context';
import { getBranchLikeQuery } from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import {
+ Dict,
+ DuplicatedFile,
+ Duplication,
+ FlowLocation,
+ Issue,
+ SnippetsByComponent,
+ SourceViewerFile
+} from '../../../types/types';
import ComponentSourceSnippetGroupViewer from './ComponentSourceSnippetGroupViewer';
import { groupLocationsByComponent } from './utils';
interface Props {
branchLike: BranchLike | undefined;
highlightedLocationMessage?: { index: number; text: string | undefined };
- issue: T.Issue;
- issues: T.Issue[];
- locations: T.FlowLocation[];
- onIssueChange: (issue: T.Issue) => void;
+ issue: Issue;
+ issues: Issue[];
+ locations: FlowLocation[];
+ onIssueChange: (issue: Issue) => void;
onLoaded?: () => void;
onLocationSelect: (index: number) => void;
scroll?: (element: HTMLElement) => void;
@@ -56,9 +65,9 @@ interface Props {
}
interface State {
- components: T.Dict<T.SnippetsByComponent>;
- duplicatedFiles?: T.Dict<T.DuplicatedFile>;
- duplications?: T.Duplication[];
+ components: Dict<SnippetsByComponent>;
+ duplicatedFiles?: Dict<DuplicatedFile>;
+ duplications?: Duplication[];
duplicationsByLine: { [line: number]: number[] };
issuePopup?: { issue: string; name: string };
loading: boolean;
@@ -146,7 +155,7 @@ export default class CrossComponentSourceViewerWrapper extends React.PureCompone
});
};
- renderDuplicationPopup = (component: T.SourceViewerFile, index: number, line: number) => {
+ renderDuplicationPopup = (component: SourceViewerFile, index: number, line: number) => {
const { duplicatedFiles, duplications } = this.state;
if (!component || !duplicatedFiles) {
diff --git a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/SnippetViewer.tsx b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/SnippetViewer.tsx
index 2d14573f536..84524731d57 100644
--- a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/SnippetViewer.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/SnippetViewer.tsx
@@ -31,37 +31,48 @@ import {
import { translate } from '../../../helpers/l10n';
import { scrollHorizontally } from '../../../helpers/scrolling';
import { BranchLike } from '../../../types/branch-like';
+import {
+ Dict,
+ Duplication,
+ ExpandDirection,
+ FlowLocation,
+ Issue,
+ IssuesByLine,
+ LinearIssueLocation,
+ SourceLine,
+ SourceViewerFile
+} from '../../../types/types';
import './SnippetViewer.css';
import { inSnippet, LINES_BELOW_ISSUE } from './utils';
interface Props {
branchLike: BranchLike | undefined;
- component: T.SourceViewerFile;
+ component: SourceViewerFile;
displayLineNumberOptions?: boolean;
displaySCM?: boolean;
- duplications?: T.Duplication[];
+ duplications?: Duplication[];
duplicationsByLine?: { [line: number]: number[] };
- expandBlock: (snippetIndex: number, direction: T.ExpandDirection) => Promise<void>;
- handleCloseIssues: (line: T.SourceLine) => void;
- handleOpenIssues: (line: T.SourceLine) => void;
+ expandBlock: (snippetIndex: number, direction: ExpandDirection) => Promise<void>;
+ handleCloseIssues: (line: SourceLine) => void;
+ handleOpenIssues: (line: SourceLine) => void;
handleSymbolClick: (symbols: string[]) => void;
highlightedLocationMessage: { index: number; text: string | undefined } | undefined;
highlightedSymbols: string[];
index: number;
- issue: Pick<T.Issue, 'key' | 'textRange' | 'line'>;
+ issue: Pick<Issue, 'key' | 'textRange' | 'line'>;
issuePopup?: { issue: string; name: string };
- issuesByLine: T.IssuesByLine;
+ issuesByLine: IssuesByLine;
lastSnippetOfLastGroup: boolean;
- loadDuplications?: (line: T.SourceLine) => void;
- locations: T.FlowLocation[];
- locationsByLine: { [line: number]: T.LinearIssueLocation[] };
- onIssueChange: (issue: T.Issue) => void;
+ loadDuplications?: (line: SourceLine) => void;
+ locations: FlowLocation[];
+ locationsByLine: { [line: number]: LinearIssueLocation[] };
+ onIssueChange: (issue: Issue) => void;
onIssuePopupToggle: (issue: string, popupName: string, open?: boolean) => void;
onLocationSelect: (index: number) => void;
- openIssuesByLine: T.Dict<boolean>;
+ openIssuesByLine: Dict<boolean>;
renderDuplicationPopup: (index: number, line: number) => React.ReactNode;
scroll?: (element: HTMLElement, offset?: number) => void;
- snippet: T.SourceLine[];
+ snippet: SourceLine[];
}
export default class SnippetViewer extends React.PureComponent<Props> {
@@ -101,7 +112,7 @@ export default class SnippetViewer extends React.PureComponent<Props> {
}
};
- expandBlock = (direction: T.ExpandDirection) => () =>
+ expandBlock = (direction: ExpandDirection) => () =>
this.props.expandBlock(this.props.index, direction).then(() => {
if (direction === 'down') {
this.scrollToLastExpandedRow();
@@ -122,10 +133,10 @@ export default class SnippetViewer extends React.PureComponent<Props> {
displayDuplications: boolean;
displaySCM?: boolean;
index: number;
- issuesForLine: T.Issue[];
- issueLocations: T.LinearIssueLocation[];
- line: T.SourceLine;
- snippet: T.SourceLine[];
+ issuesForLine: Issue[];
+ issueLocations: LinearIssueLocation[];
+ line: SourceLine;
+ snippet: SourceLine[];
symbols: string[];
verticalBuffer: number;
}) {
diff --git a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/ComponentSourceSnippetGroupViewer-test.tsx b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/ComponentSourceSnippetGroupViewer-test.tsx
index 899005fdf8d..2bcbde07967 100644
--- a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/ComponentSourceSnippetGroupViewer-test.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/__tests__/ComponentSourceSnippetGroupViewer-test.tsx
@@ -31,6 +31,7 @@ import {
mockSourceViewerFile
} from '../../../../helpers/testMocks';
import { waitAndUpdate } from '../../../../helpers/testUtils';
+import { SnippetGroup } from '../../../../types/types';
import ComponentSourceSnippetGroupViewer from '../ComponentSourceSnippetGroupViewer';
import SnippetViewer from '../SnippetViewer';
@@ -53,7 +54,7 @@ it('should render correctly with secondary locations', () => {
textRange: { startLine: 7, endLine: 7, startOffset: 5, endOffset: 10 }
});
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
locations: [
mockFlowLocation({
component: issue.component,
@@ -84,7 +85,7 @@ it('should render correctly with flows', () => {
textRange: { startLine: 7, endLine: 7, startOffset: 5, endOffset: 10 }
});
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
locations: [
mockFlowLocation({
component: issue.component,
@@ -155,7 +156,7 @@ it('should expand block', async () => {
const issue = mockIssue(true, {
textRange: { startLine: 74, endLine: 74, startOffset: 5, endOffset: 10 }
});
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
locations: [
mockFlowLocation({
component: 'a',
@@ -184,7 +185,7 @@ it('should expand full component', async () => {
(getSources as jest.Mock).mockResolvedValueOnce(
Object.values(mockSnippetsByComponent('a', times(14)).sources)
);
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
locations: [
mockFlowLocation({
component: 'a',
@@ -214,7 +215,7 @@ it('should get the right branch when expanding', async () => {
mockSnippetsByComponent('a', [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]).sources
)
);
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
locations: [mockFlowLocation()],
...mockSnippetsByComponent('a', [1, 2, 3, 4, 5, 6, 7])
};
@@ -250,7 +251,7 @@ it('should handle symbol highlighting', () => {
});
it('should correctly handle lines actions', () => {
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
locations: [
mockFlowLocation({
component: 'a',
@@ -291,7 +292,7 @@ it('should correctly handle lines actions', () => {
});
describe('getNodes', () => {
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
component: mockSourceViewerFile(),
locations: [],
sources: []
@@ -346,7 +347,7 @@ describe('getNodes', () => {
describe('getHeight', () => {
jest.useFakeTimers();
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
component: mockSourceViewerFile(),
locations: [],
sources: []
@@ -397,7 +398,7 @@ describe('getHeight', () => {
});
function shallowRender(props: Partial<ComponentSourceSnippetGroupViewer['props']> = {}) {
- const snippetGroup: T.SnippetGroup = {
+ const snippetGroup: SnippetGroup = {
component: mockSourceViewerFile(),
locations: [],
sources: []
diff --git a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/utils.ts b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/utils.ts
index 65c15dc49f9..48ce2f36565 100644
--- a/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/utils.ts
+++ b/server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/utils.ts
@@ -17,13 +17,24 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+import {
+ ExpandDirection,
+ FlowLocation,
+ Issue,
+ LineMap,
+ Snippet,
+ SnippetGroup,
+ SnippetsByComponent,
+ SourceLine
+} from '../../../types/types';
+
const LINES_ABOVE = 5;
const LINES_BELOW = 5;
export const MERGE_DISTANCE = 11; // Merge if snippets are eleven lines away (separated by 10 lines) or fewer
export const LINES_BELOW_ISSUE = 9;
export const EXPAND_BY_LINES = 50;
-function unknownComponent(key: string): T.SnippetsByComponent {
+function unknownComponent(key: string): SnippetsByComponent {
return {
component: {
key,
@@ -42,7 +53,7 @@ function collision([startA, endA]: number[], [startB, endB]: number[]) {
return !(startA > endB + MERGE_DISTANCE || endA < startB - MERGE_DISTANCE);
}
-export function getPrimaryLocation(issue: T.Issue): T.FlowLocation {
+export function getPrimaryLocation(issue: Issue): FlowLocation {
return {
component: issue.component,
textRange: issue.textRange || {
@@ -54,7 +65,7 @@ export function getPrimaryLocation(issue: T.Issue): T.FlowLocation {
};
}
-function addLinesBellow(params: { issue: T.Issue; locationEnd: number }) {
+function addLinesBellow(params: { issue: Issue; locationEnd: number }) {
const { issue, locationEnd } = params;
const issueEndLine = (issue.textRange && issue.textRange.endLine) || 0;
@@ -67,9 +78,9 @@ function addLinesBellow(params: { issue: T.Issue; locationEnd: number }) {
export function createSnippets(params: {
component: string;
- issue: T.Issue;
- locations: T.FlowLocation[];
-}): T.Snippet[] {
+ issue: Issue;
+ locations: FlowLocation[];
+}): Snippet[] {
const { component, issue, locations } = params;
const hasSecondaryLocations = issue.secondaryLocations.length > 0;
@@ -79,7 +90,7 @@ export function createSnippets(params: {
// For each location: compute its range, and then compare with other ranges
// to merge snippets that collide.
const ranges = (addIssueLocation ? [getPrimaryLocation(issue), ...locations] : locations).reduce(
- (snippets: T.Snippet[], loc, index) => {
+ (snippets: Snippet[], loc, index) => {
const startIndex = Math.max(1, loc.textRange.startLine - LINES_ABOVE);
const endIndex = addLinesBellow({ issue, locationEnd: loc.textRange.endLine });
@@ -122,7 +133,7 @@ export function createSnippets(params: {
return hasSecondaryLocations ? ranges.sort((a, b) => a.start - b.start) : ranges;
}
-export function linesForSnippets(snippets: T.Snippet[], componentLines: T.LineMap) {
+export function linesForSnippets(snippets: Snippet[], componentLines: LineMap) {
return snippets
.map(snippet => {
const lines = [];
@@ -137,13 +148,13 @@ export function linesForSnippets(snippets: T.Snippet[], componentLines: T.LineMa
}
export function groupLocationsByComponent(
- issue: T.Issue,
- locations: T.FlowLocation[],
- components: { [key: string]: T.SnippetsByComponent }
+ issue: Issue,
+ locations: FlowLocation[],
+ components: { [key: string]: SnippetsByComponent }
) {
let currentComponent = '';
- let currentGroup: T.SnippetGroup;
- const groups: T.SnippetGroup[] = [];
+ let currentGroup: SnippetGroup;
+ const groups: SnippetGroup[] = [];
const addGroup = (componentKey: string) => {
currentGroup = {
@@ -177,9 +188,9 @@ export function expandSnippet({
snippetIndex,
snippets
}: {
- direction: T.ExpandDirection;
+ direction: ExpandDirection;
snippetIndex: number;
- snippets: T.Snippet[];
+ snippets: Snippet[];
}) {
const snippetToExpand = snippets.find(s => s.index === snippetIndex);
if (!snippetToExpand) {
@@ -206,6 +217,6 @@ export function expandSnippet({
});
}
-export function inSnippet(line: number, snippet: T.SourceLine[]) {
+export function inSnippet(line: number, snippet: SourceLine[]) {
return line >= snippet[0].line && line <= snippet[snippet.length - 1].line;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/redirects.ts b/server/sonar-web/src/main/js/apps/issues/redirects.ts
index 35cc0eebc6b..4f424d6fd74 100644
--- a/server/sonar-web/src/main/js/apps/issues/redirects.ts
+++ b/server/sonar-web/src/main/js/apps/issues/redirects.ts
@@ -18,10 +18,11 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { Location } from '../../helpers/urls';
+import { RawQuery } from '../../types/types';
import { areMyIssuesSelected, parseQuery, serializeQuery } from './utils';
function parseHash(hash: string) {
- const query: T.RawQuery = {};
+ const query: RawQuery = {};
const parts = hash.split('|');
parts.forEach(part => {
const tokens = part.split('=');
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
index 20154382029..e8f2ac769d6 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
@@ -25,6 +25,7 @@ import { translate, translateWithParameters } from '../../../helpers/l10n';
import { highlightTerm } from '../../../helpers/search';
import { isUserActive } from '../../../helpers/users';
import { Facet } from '../../../types/issues';
+import { Dict, UserBase } from '../../../types/types';
import { Query, searchAssignees } from '../utils';
interface Props {
@@ -36,8 +37,8 @@ interface Props {
onToggle: (property: string) => void;
open: boolean;
query: Query;
- stats: T.Dict<number> | undefined;
- referencedUsers: T.Dict<T.UserBase>;
+ stats: Dict<number> | undefined;
+ referencedUsers: Dict<UserBase>;
}
export default class AssigneeFacet extends React.PureComponent<Props> {
@@ -79,7 +80,7 @@ export default class AssigneeFacet extends React.PureComponent<Props> {
}
};
- loadSearchResultCount = (assignees: T.UserBase[]) => {
+ loadSearchResultCount = (assignees: UserBase[]) => {
return this.props.loadSearchResultCount('assignees', {
assigned: undefined,
assignees: assignees.map(assignee => assignee.login)
@@ -118,7 +119,7 @@ export default class AssigneeFacet extends React.PureComponent<Props> {
);
};
- renderSearchResult = (result: T.UserBase, query: string) => {
+ renderSearchResult = (result: UserBase, query: string) => {
const displayName = isUserActive(result)
? result.name
: translateWithParameters('user.x_deleted', result.login);
@@ -142,7 +143,7 @@ export default class AssigneeFacet extends React.PureComponent<Props> {
}
return (
- <ListStyleFacet<T.UserBase>
+ <ListStyleFacet<UserBase>
facetHeader={translate('issues.facet.assignees')}
fetching={this.props.fetching}
getFacetItemText={this.getAssigneeName}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
index 2dd7db0f760..39488507762 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
@@ -24,17 +24,18 @@ import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { translate } from '../../../helpers/l10n';
import { highlightTerm } from '../../../helpers/search';
import { Facet } from '../../../types/issues';
+import { Component, Dict } from '../../../types/types';
import { Query } from '../utils';
interface Props {
- component: T.Component | undefined;
+ component: Component | undefined;
fetching: boolean;
loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
onChange: (changes: Partial<Query>) => void;
onToggle: (property: string) => void;
open: boolean;
query: Query;
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
author: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx
index a69c5b1c7f1..0993c05084c 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx
@@ -35,10 +35,11 @@ import { parseDate } from '../../../helpers/dates';
import { translate } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
import { isPortfolioLike } from '../../../types/component';
+import { Component, Dict } from '../../../types/types';
import { Query } from '../utils';
interface Props {
- component: T.Component | undefined;
+ component: Component | undefined;
createdAfter: Date | undefined;
createdAfterIncludesTime: boolean;
createdAt: string;
@@ -49,7 +50,7 @@ interface Props {
onToggle: (property: string) => void;
open: boolean;
sinceLeakPeriod: boolean;
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
}
export class CreationDateFacet extends React.PureComponent<Props & WrappedComponentProps> {
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
index a898a622af5..cc13835d859 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
@@ -25,6 +25,7 @@ import { translate } from '../../../helpers/l10n';
import { highlightTerm } from '../../../helpers/search';
import { getLanguages, Store } from '../../../store/rootReducer';
import { Facet, ReferencedLanguage } from '../../../types/issues';
+import { Dict } from '../../../types/types';
import { Query } from '../utils';
interface InstalledLanguage {
@@ -41,8 +42,8 @@ interface Props {
onToggle: (property: string) => void;
open: boolean;
query: Query;
- referencedLanguages: T.Dict<ReferencedLanguage>;
- stats: T.Dict<number> | undefined;
+ referencedLanguages: Dict<ReferencedLanguage>;
+ stats: Dict<number> | undefined;
}
class LanguageFacet extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
index 4738c61842d..465b29ba095 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
@@ -26,10 +26,11 @@ import { translate } from '../../../helpers/l10n';
import { highlightTerm } from '../../../helpers/search';
import { ComponentQualifier } from '../../../types/component';
import { Facet, ReferencedComponent } from '../../../types/issues';
+import { Component, Dict, Paging } from '../../../types/types';
import { Query } from '../utils';
interface Props {
- component: T.Component | undefined;
+ component: Component | undefined;
loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
fetching: boolean;
onChange: (changes: Partial<Query>) => void;
@@ -37,8 +38,8 @@ interface Props {
open: boolean;
projects: string[];
query: Query;
- referencedComponents: T.Dict<ReferencedComponent>;
- stats: T.Dict<number> | undefined;
+ referencedComponents: Dict<ReferencedComponent>;
+ stats: Dict<number> | undefined;
}
interface SearchedProject {
@@ -50,7 +51,7 @@ export default class ProjectFacet extends React.PureComponent<Props> {
handleSearch = (
query: string,
page = 1
- ): Promise<{ results: SearchedProject[]; paging: T.Paging }> => {
+ ): Promise<{ results: SearchedProject[]; paging: Paging }> => {
const { component } = this.props;
if (
component &&
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.tsx
index 3d471491686..d13db6d05da 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.tsx
@@ -25,6 +25,7 @@ import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import MultipleSelectionHint from '../../../components/facet/MultipleSelectionHint';
import { translate } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { formatFacetStat, Query } from '../utils';
interface Props {
@@ -34,7 +35,7 @@ interface Props {
open: boolean;
resolved: boolean;
resolutions: string[];
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
}
const RESOLUTIONS = ['', 'FALSE-POSITIVE', 'FIXED', 'REMOVED', 'WONTFIX'];
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
index 61d48932cfa..1c2075778a3 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
@@ -23,6 +23,7 @@ import { searchRules } from '../../../api/rules';
import ListStyleFacet from '../../../components/facet/ListStyleFacet';
import { translate } from '../../../helpers/l10n';
import { Facet, ReferencedRule } from '../../../types/issues';
+import { Dict, Rule } from '../../../types/types';
import { Query } from '../utils';
interface Props {
@@ -33,9 +34,9 @@ interface Props {
onToggle: (property: string) => void;
open: boolean;
query: Query;
- referencedRules: T.Dict<ReferencedRule>;
+ referencedRules: Dict<ReferencedRule>;
rules: string[];
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
}
export default class RuleFacet extends React.PureComponent<Props> {
@@ -55,7 +56,7 @@ export default class RuleFacet extends React.PureComponent<Props> {
}));
};
- loadSearchResultCount = (rules: T.Rule[]) => {
+ loadSearchResultCount = (rules: Rule[]) => {
return this.props.loadSearchResultCount('rules', { rules: rules.map(rule => rule.key) });
};
@@ -70,13 +71,13 @@ export default class RuleFacet extends React.PureComponent<Props> {
return langName ? `(${langName}) ${name}` : name;
};
- renderSearchResult = (rule: T.Rule) => {
+ renderSearchResult = (rule: Rule) => {
return this.formatRuleName(rule.name, rule.langName);
};
render() {
return (
- <ListStyleFacet<T.Rule>
+ <ListStyleFacet<Rule>
facetHeader={translate('issues.facet.rules')}
fetching={this.props.fetching}
getFacetItemText={this.getRuleName}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/ScopeFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/ScopeFacet.tsx
index 44d3e34dc85..f7fce703011 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/ScopeFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/ScopeFacet.tsx
@@ -27,6 +27,7 @@ import MultipleSelectionHint from '../../../components/facet/MultipleSelectionHi
import QualifierIcon from '../../../components/icons/QualifierIcon';
import { SOURCE_SCOPES } from '../../../helpers/constants';
import { translate } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { formatFacetStat, Query } from '../utils';
export interface ScopeFacetProps {
@@ -35,7 +36,7 @@ export interface ScopeFacetProps {
onToggle: (property: string) => void;
open: boolean;
scopes: string[];
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
}
export default function ScopeFacet(props: ScopeFacetProps) {
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.tsx
index e607e0bf9b9..10e4ae10bea 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.tsx
@@ -26,6 +26,7 @@ import FacetItemsList from '../../../components/facet/FacetItemsList';
import MultipleSelectionHint from '../../../components/facet/MultipleSelectionHint';
import SeverityHelper from '../../../components/shared/SeverityHelper';
import { translate } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { formatFacetStat, Query } from '../utils';
interface Props {
@@ -34,7 +35,7 @@ interface Props {
onToggle: (property: string) => void;
open: boolean;
severities: string[];
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
}
const SEVERITIES = ['BLOCKER', 'MINOR', 'CRITICAL', 'INFO', 'MAJOR'];
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
index 67666f9bc77..e86a72ec3b4 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
@@ -19,9 +19,9 @@
*/
import * as React from 'react';
import { connect } from 'react-redux';
+import { isBranch, isPullRequest } from '../../../helpers/branch-like';
import { getGlobalSettingValue, Store } from '../../../store/rootReducer';
import { BranchLike } from '../../../types/branch-like';
-import { isBranch, isPullRequest } from '../../../helpers/branch-like';
import { ComponentQualifier, isApplication, isPortfolioLike } from '../../../types/component';
import {
Facet,
@@ -29,6 +29,7 @@ import {
ReferencedLanguage,
ReferencedRule
} from '../../../types/issues';
+import { Component, Dict, UserBase } from '../../../types/types';
import { Query } from '../utils';
import AssigneeFacet from './AssigneeFacet';
import AuthorFacet from './AuthorFacet';
@@ -48,21 +49,21 @@ import TypeFacet from './TypeFacet';
export interface Props {
branchLike?: BranchLike;
- component: T.Component | undefined;
+ component: Component | undefined;
createdAfterIncludesTime: boolean;
- facets: T.Dict<Facet | undefined>;
+ facets: Dict<Facet | undefined>;
loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
- loadingFacets: T.Dict<boolean>;
+ loadingFacets: Dict<boolean>;
myIssues: boolean;
onFacetToggle: (property: string) => void;
onFilterChange: (changes: Partial<Query>) => void;
- openFacets: T.Dict<boolean>;
+ openFacets: Dict<boolean>;
query: Query;
- referencedComponentsById: T.Dict<ReferencedComponent>;
- referencedComponentsByKey: T.Dict<ReferencedComponent>;
- referencedLanguages: T.Dict<ReferencedLanguage>;
- referencedRules: T.Dict<ReferencedRule>;
- referencedUsers: T.Dict<T.UserBase>;
+ referencedComponentsById: Dict<ReferencedComponent>;
+ referencedComponentsByKey: Dict<ReferencedComponent>;
+ referencedLanguages: Dict<ReferencedLanguage>;
+ referencedRules: Dict<ReferencedRule>;
+ referencedUsers: Dict<UserBase>;
disableDeveloperAggregatedInfo: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
index ae087df51be..06e7f05b4ba 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
@@ -36,12 +36,13 @@ import {
} from '../../../helpers/security-standard';
import { Facet } from '../../../types/issues';
import { SecurityStandard, Standards, StandardType } from '../../../types/security';
+import { Dict } from '../../../types/types';
import { formatFacetStat, Query, STANDARDS } from '../utils';
interface Props {
cwe: string[];
cweOpen: boolean;
- cweStats: T.Dict<number> | undefined;
+ cweStats: Dict<number> | undefined;
fetchingCwe: boolean;
fetchingOwaspTop10: boolean;
fetchingSansTop25: boolean;
@@ -52,14 +53,14 @@ interface Props {
open: boolean;
owaspTop10: string[];
owaspTop10Open: boolean;
- owaspTop10Stats: T.Dict<number> | undefined;
+ owaspTop10Stats: Dict<number> | undefined;
query: Partial<Query>;
sansTop25: string[];
sansTop25Open: boolean;
- sansTop25Stats: T.Dict<number> | undefined;
+ sansTop25Stats: Dict<number> | undefined;
sonarsourceSecurity: string[];
sonarsourceSecurityOpen: boolean;
- sonarsourceSecurityStats: T.Dict<number> | undefined;
+ sonarsourceSecurityStats: Dict<number> | undefined;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx
index ebf1fa97c75..01a22bf23a5 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx
@@ -26,6 +26,7 @@ import FacetItemsList from '../../../components/facet/FacetItemsList';
import MultipleSelectionHint from '../../../components/facet/MultipleSelectionHint';
import StatusHelper from '../../../components/shared/StatusHelper';
import { translate } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { formatFacetStat, Query } from '../utils';
interface Props {
@@ -33,7 +34,7 @@ interface Props {
onChange: (changes: Partial<Query>) => void;
onToggle: (property: string) => void;
open: boolean;
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
statuses: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
index 6c8f4af269c..573b961b861 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
@@ -26,10 +26,11 @@ import TagsIcon from '../../../components/icons/TagsIcon';
import { translate } from '../../../helpers/l10n';
import { highlightTerm } from '../../../helpers/search';
import { Facet } from '../../../types/issues';
+import { Component, Dict } from '../../../types/types';
import { Query } from '../utils';
interface Props {
- component: T.Component | undefined;
+ component: Component | undefined;
branch?: string;
fetching: boolean;
loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
@@ -37,7 +38,7 @@ interface Props {
onToggle: (property: string) => void;
open: boolean;
query: Query;
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
tags: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.tsx
index 057d954e2de..80c6e518c7a 100644
--- a/server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.tsx
@@ -27,6 +27,7 @@ import MultipleSelectionHint from '../../../components/facet/MultipleSelectionHi
import IssueTypeIcon from '../../../components/icons/IssueTypeIcon';
import { ISSUE_TYPES } from '../../../helpers/constants';
import { translate } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { formatFacetStat, Query } from '../utils';
interface Props {
@@ -34,7 +35,7 @@ interface Props {
onChange: (changes: Partial<Query>) => void;
onToggle: (property: string) => void;
open: boolean;
- stats: T.Dict<number> | undefined;
+ stats: Dict<number> | undefined;
types: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/issues/utils.ts b/server/sonar-web/src/main/js/apps/issues/utils.ts
index e8d4f8baf0f..4b5c9f9713b 100644
--- a/server/sonar-web/src/main/js/apps/issues/utils.ts
+++ b/server/sonar-web/src/main/js/apps/issues/utils.ts
@@ -36,6 +36,7 @@ import { get, save } from '../../helpers/storage';
import { isDefined } from '../../helpers/types';
import { Facet, RawFacet } from '../../types/issues';
import { SecurityStandard, StandardType } from '../../types/security';
+import { Dict, Issue, Paging, RawQuery, UserBase } from '../../types/types';
export interface Query {
assigned: boolean;
@@ -78,7 +79,7 @@ export const STANDARD_TYPES: StandardType[] = [
const parseAsSort = (sort: string) => (sort === 'CREATION_DATE' ? 'CREATION_DATE' : '');
const ISSUES_DEFAULT = 'sonarqube.issues.default';
-export function parseQuery(query: T.RawQuery): Query {
+export function parseQuery(query: RawQuery): Query {
return {
assigned: parseAsBoolean(query.assigned),
assignees: parseAsArray(query.assignees, parseAsString),
@@ -109,13 +110,13 @@ export function parseQuery(query: T.RawQuery): Query {
};
}
-export function getOpen(query: T.RawQuery): string | undefined {
+export function getOpen(query: RawQuery): string | undefined {
return query.open;
}
-export const areMyIssuesSelected = (query: T.RawQuery) => query.myIssues === 'true';
+export const areMyIssuesSelected = (query: RawQuery) => query.myIssues === 'true';
-export function serializeQuery(query: Query): T.RawQuery {
+export function serializeQuery(query: Query): RawQuery {
const filter = {
assigned: query.assigned ? undefined : 'false',
assignees: serializeStringArray(query.assignees),
@@ -148,15 +149,15 @@ export function serializeQuery(query: Query): T.RawQuery {
return cleanQuery(filter);
}
-export const areQueriesEqual = (a: T.RawQuery, b: T.RawQuery) =>
+export const areQueriesEqual = (a: RawQuery, b: RawQuery) =>
queriesEqual(parseQuery(a), parseQuery(b));
-export function parseFacets(facets: RawFacet[]): T.Dict<Facet> {
+export function parseFacets(facets: RawFacet[]): Dict<Facet> {
if (!facets) {
return {};
}
- const result: T.Dict<Facet> = {};
+ const result: Dict<Facet> = {};
facets.forEach(facet => {
const values: Facet = {};
facet.values.forEach(value => {
@@ -174,7 +175,7 @@ export function formatFacetStat(stat: number | undefined) {
export const searchAssignees = (
query: string,
page = 1
-): Promise<{ paging: T.Paging; results: T.UserBase[] }> => {
+): Promise<{ paging: Paging; results: UserBase[] }> => {
return searchUsers({ p: page, q: query }).then(({ paging, users }) => ({
paging,
results: users
@@ -192,7 +193,7 @@ export const saveMyIssues = (myIssues: boolean) =>
save(ISSUES_DEFAULT, myIssues ? LOCALSTORAGE_MY : LOCALSTORAGE_ALL);
export function getLocations(
- { flows, secondaryLocations }: Pick<T.Issue, 'flows' | 'secondaryLocations'>,
+ { flows, secondaryLocations }: Pick<Issue, 'flows' | 'secondaryLocations'>,
selectedFlowIndex: number | undefined
) {
if (selectedFlowIndex !== undefined) {
@@ -203,7 +204,7 @@ export function getLocations(
}
export function getSelectedLocation(
- issue: Pick<T.Issue, 'flows' | 'secondaryLocations'>,
+ issue: Pick<Issue, 'flows' | 'secondaryLocations'>,
selectedFlowIndex: number | undefined,
selectedLocationIndex: number | undefined
) {
@@ -220,7 +221,7 @@ export function getSelectedLocation(
}
export function allLocationsEmpty(
- issue: Pick<T.Issue, 'flows' | 'secondaryLocations'>,
+ issue: Pick<Issue, 'flows' | 'secondaryLocations'>,
selectedFlowIndex: number | undefined
) {
return getLocations(issue, selectedFlowIndex).every(location => !location.msg);
@@ -234,7 +235,7 @@ export function scrollToIssue(issue: string, smooth = true) {
}
export function shouldOpenStandardsFacet(
- openFacets: T.Dict<boolean>,
+ openFacets: Dict<boolean>,
query: Partial<Query>
): boolean {
return (
@@ -245,7 +246,7 @@ export function shouldOpenStandardsFacet(
}
export function shouldOpenStandardsChildFacet(
- openFacets: T.Dict<boolean>,
+ openFacets: Dict<boolean>,
query: Partial<Query>,
standardType: SecurityStandard
): boolean {
@@ -258,7 +259,7 @@ export function shouldOpenStandardsChildFacet(
}
export function shouldOpenSonarSourceSecurityFacet(
- openFacets: T.Dict<boolean>,
+ openFacets: Dict<boolean>,
query: Partial<Query>
): boolean {
// Open it by default if the parent is open, and no other standard is open.
@@ -272,7 +273,7 @@ function isFilteredBySecurityIssueTypes(query: Partial<Query>): boolean {
return query.types !== undefined && query.types.includes('VULNERABILITY');
}
-function isOneStandardChildFacetOpen(openFacets: T.Dict<boolean>, query: Partial<Query>): boolean {
+function isOneStandardChildFacetOpen(openFacets: Dict<boolean>, query: Partial<Query>): boolean {
return STANDARD_TYPES.some(standardType =>
shouldOpenStandardsChildFacet(openFacets, query, standardType)
);
diff --git a/server/sonar-web/src/main/js/apps/marketplace/AppContainer.tsx b/server/sonar-web/src/main/js/apps/marketplace/AppContainer.tsx
index e49721d363f..43a2c17787f 100644
--- a/server/sonar-web/src/main/js/apps/marketplace/AppContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/marketplace/AppContainer.tsx
@@ -22,10 +22,11 @@ import { connect } from 'react-redux';
import AdminContext from '../../app/components/AdminContext';
import { getAppState, getGlobalSettingValue, Store } from '../../store/rootReducer';
import { EditionKey } from '../../types/editions';
+import { RawQuery } from '../../types/types';
import App from './App';
interface OwnProps {
- location: { pathname: string; query: T.RawQuery };
+ location: { pathname: string; query: RawQuery };
}
interface StateToProps {
diff --git a/server/sonar-web/src/main/js/apps/marketplace/utils.ts b/server/sonar-web/src/main/js/apps/marketplace/utils.ts
index d6a75278316..8c4a0eca1b4 100644
--- a/server/sonar-web/src/main/js/apps/marketplace/utils.ts
+++ b/server/sonar-web/src/main/js/apps/marketplace/utils.ts
@@ -20,6 +20,7 @@
import { memoize } from 'lodash';
import { cleanQuery, parseAsString, serializeString } from '../../helpers/query';
import { Plugin } from '../../types/plugins';
+import { RawQuery } from '../../types/types';
export interface Query {
filter: string;
@@ -45,14 +46,14 @@ export function filterPlugins(plugins: Plugin[], search?: string): Plugin[] {
export const DEFAULT_FILTER = 'all';
export const parseQuery = memoize(
- (urlQuery: T.RawQuery): Query => ({
+ (urlQuery: RawQuery): Query => ({
filter: parseAsString(urlQuery['filter']) || DEFAULT_FILTER,
search: parseAsString(urlQuery['search'])
})
);
export const serializeQuery = memoize(
- (query: Query): T.RawQuery =>
+ (query: Query): RawQuery =>
cleanQuery({
filter: query.filter === DEFAULT_FILTER ? undefined : serializeString(query.filter),
search: query.search ? serializeString(query.search) : undefined
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/ActivityPanel.tsx b/server/sonar-web/src/main/js/apps/overview/branches/ActivityPanel.tsx
index 163d39c564e..aa70f143472 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/ActivityPanel.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/ActivityPanel.tsx
@@ -32,17 +32,18 @@ import { parseDate } from '../../../helpers/dates';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
import { GraphType, MeasureHistory } from '../../../types/project-activity';
+import { Analysis as AnalysisType, Component, Metric } from '../../../types/types';
import Analysis from './Analysis';
export interface ActivityPanelProps {
- analyses?: T.Analysis[];
+ analyses?: AnalysisType[];
branchLike?: BranchLike;
- component: Pick<T.Component, 'key' | 'qualifier'>;
+ component: Pick<Component, 'key' | 'qualifier'>;
graph?: GraphType;
leakPeriodDate?: Date;
loading?: boolean;
measuresHistory: MeasureHistory[];
- metrics: T.Metric[];
+ metrics: Metric[];
onGraphChange: (graph: GraphType) => void;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/Analysis.tsx b/server/sonar-web/src/main/js/apps/overview/branches/Analysis.tsx
index 80a7a6274b7..4daeefa495f 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/Analysis.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/Analysis.tsx
@@ -22,10 +22,11 @@ import * as React from 'react';
import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
import { translate } from '../../../helpers/l10n';
import { ComponentQualifier } from '../../../types/component';
+import { Analysis as TypeAnalysis } from '../../../types/types';
import Event from './Event';
export interface AnalysisProps {
- analysis: T.Analysis;
+ analysis: TypeAnalysis;
qualifier: string;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/BranchOverview.tsx b/server/sonar-web/src/main/js/apps/overview/branches/BranchOverview.tsx
index 9ab00c04736..ecf8a51dcb5 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/BranchOverview.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/BranchOverview.tsx
@@ -49,6 +49,7 @@ import { ComponentQualifier } from '../../../types/component';
import { MetricKey } from '../../../types/metrics';
import { GraphType, MeasureHistory } from '../../../types/project-activity';
import { QualityGateStatus, QualityGateStatusCondition } from '../../../types/quality-gates';
+import { Analysis, Component, MeasureEnhanced, Metric, Period } from '../../../types/types';
import '../styles.css';
import { HISTORY_METRICS_LIST, METRICS } from '../utils';
import BranchOverviewRenderer from './BranchOverviewRenderer';
@@ -56,21 +57,21 @@ import BranchOverviewRenderer from './BranchOverviewRenderer';
interface Props {
branch?: Branch;
branchesEnabled?: boolean;
- component: T.Component;
+ component: Component;
projectBinding?: ProjectAlmBindingResponse;
}
interface State {
- analyses?: T.Analysis[];
+ analyses?: Analysis[];
appLeak?: ApplicationPeriod;
detectedCIOnLastAnalysis?: boolean;
graph: GraphType;
loadingHistory?: boolean;
loadingStatus?: boolean;
- measures?: T.MeasureEnhanced[];
+ measures?: MeasureEnhanced[];
measuresHistory?: MeasureHistory[];
- metrics?: T.Metric[];
- period?: T.Period;
+ metrics?: Metric[];
+ period?: Period;
qgStatuses?: QualityGateStatus[];
}
@@ -348,10 +349,7 @@ export default class BranchOverview extends React.PureComponent<Props, State> {
);
};
- getFailedConditions = (
- conditions: QualityGateStatusCondition[],
- measures: T.MeasureEnhanced[]
- ) => {
+ getFailedConditions = (conditions: QualityGateStatusCondition[], measures: MeasureEnhanced[]) => {
return (
conditions
.filter(c => c.level !== 'OK')
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx b/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx
index d537f7d5d7a..c3be7dbff7e 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/BranchOverviewRenderer.tsx
@@ -26,6 +26,7 @@ import { Branch } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { GraphType, MeasureHistory } from '../../../types/project-activity';
import { QualityGateStatus } from '../../../types/quality-gates';
+import { Analysis, Component, MeasureEnhanced, Metric, Period } from '../../../types/types';
import ActivityPanel from './ActivityPanel';
import FirstAnalysisNextStepsNotif from './FirstAnalysisNextStepsNotif';
import { MeasuresPanel } from './MeasuresPanel';
@@ -33,20 +34,20 @@ import NoCodeWarning from './NoCodeWarning';
import QualityGatePanel from './QualityGatePanel';
export interface BranchOverviewRendererProps {
- analyses?: T.Analysis[];
+ analyses?: Analysis[];
appLeak?: ApplicationPeriod;
branch?: Branch;
branchesEnabled?: boolean;
- component: T.Component;
+ component: Component;
detectedCIOnLastAnalysis?: boolean;
graph?: GraphType;
loadingHistory?: boolean;
loadingStatus?: boolean;
- measures?: T.MeasureEnhanced[];
+ measures?: MeasureEnhanced[];
measuresHistory?: MeasureHistory[];
- metrics?: T.Metric[];
+ metrics?: Metric[];
onGraphChange: (graph: GraphType) => void;
- period?: T.Period;
+ period?: Period;
projectBinding?: ProjectAlmBindingResponse;
projectIsEmpty?: boolean;
qgStatuses?: QualityGateStatus[];
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/DebtValue.tsx b/server/sonar-web/src/main/js/apps/overview/branches/DebtValue.tsx
index abf286bd08f..5a8c51c3a32 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/DebtValue.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/DebtValue.tsx
@@ -24,11 +24,12 @@ import { getLocalizedMetricName, translate } from '../../../helpers/l10n';
import { findMeasure, formatMeasure, localizeMetric } from '../../../helpers/measures';
import { BranchLike } from '../../../types/branch-like';
import { MetricKey } from '../../../types/metrics';
+import { Component, MeasureEnhanced } from '../../../types/types';
export interface DebtValueProps {
branchLike?: BranchLike;
- component: T.Component;
- measures: T.MeasureEnhanced[];
+ component: Component;
+ measures: MeasureEnhanced[];
useDiffMetric?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/DrilldownMeasureValue.tsx b/server/sonar-web/src/main/js/apps/overview/branches/DrilldownMeasureValue.tsx
index c30a0ca7f04..3a6d201bada 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/DrilldownMeasureValue.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/DrilldownMeasureValue.tsx
@@ -23,11 +23,12 @@ import { getLocalizedMetricName } from '../../../helpers/l10n';
import { findMeasure, formatMeasure } from '../../../helpers/measures';
import { BranchLike } from '../../../types/branch-like';
import { MetricKey } from '../../../types/metrics';
+import { Component, MeasureEnhanced } from '../../../types/types';
export interface DrilldownMeasureValueProps {
branchLike?: BranchLike;
- component: T.Component;
- measures: T.MeasureEnhanced[];
+ component: Component;
+ measures: MeasureEnhanced[];
metric: MetricKey;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/Event.tsx b/server/sonar-web/src/main/js/apps/overview/branches/Event.tsx
index ce8440b6d3e..a33b217d70c 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/Event.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/Event.tsx
@@ -21,11 +21,12 @@ import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import Level from '../../../components/ui/Level';
import { translate } from '../../../helpers/l10n';
+import { AnalysisEvent } from '../../../types/types';
import { isDefinitionChangeEvent } from '../../projectActivity/components/DefinitionChangeEventInner';
import { isRichQualityGateEvent } from '../../projectActivity/components/RichQualityGateEventInner';
interface Props {
- event: T.AnalysisEvent;
+ event: AnalysisEvent;
}
export function Event({ event }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/FirstAnalysisNextStepsNotif.tsx b/server/sonar-web/src/main/js/apps/overview/branches/FirstAnalysisNextStepsNotif.tsx
index 704d09759bb..5338da91e84 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/FirstAnalysisNextStepsNotif.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/FirstAnalysisNextStepsNotif.tsx
@@ -26,12 +26,13 @@ import { translate } from '../../../helpers/l10n';
import { isLoggedIn } from '../../../helpers/users';
import { ProjectAlmBindingResponse } from '../../../types/alm-settings';
import { ComponentQualifier } from '../../../types/component';
+import { Component, CurrentUser } from '../../../types/types';
import { PULL_REQUEST_DECORATION_BINDING_CATEGORY } from '../../settings/components/AdditionalCategoryKeys';
export interface FirstAnalysisNextStepsNotifProps {
branchesEnabled?: boolean;
- component: T.Component;
- currentUser: T.CurrentUser;
+ component: Component;
+ currentUser: CurrentUser;
detectedCIOnLastAnalysis?: boolean;
projectBinding?: ProjectAlmBindingResponse;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/LeakPeriodInfo.tsx b/server/sonar-web/src/main/js/apps/overview/branches/LeakPeriodInfo.tsx
index 53e675c3f67..49b89c3783d 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/LeakPeriodInfo.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/LeakPeriodInfo.tsx
@@ -20,11 +20,12 @@
import * as React from 'react';
import { isApplicationPeriod } from '../../../helpers/periods';
import { ApplicationPeriod } from '../../../types/application';
+import { Period } from '../../../types/types';
import ApplicationLeakPeriodInfo from './ApplicationLeakPeriodInfo';
import ProjectLeakPeriodInfo from './ProjectLeakPeriodInfo';
export interface LeakPeriodInfoProps {
- leakPeriod: T.Period | ApplicationPeriod;
+ leakPeriod: Period | ApplicationPeriod;
}
export function LeakPeriodInfo({ leakPeriod }: LeakPeriodInfoProps) {
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanel.tsx b/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanel.tsx
index 4edc3cba36b..dcc39f05b8b 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanel.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanel.tsx
@@ -29,6 +29,7 @@ import { Branch } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { IssueType } from '../../../types/issues';
import { MetricKey } from '../../../types/metrics';
+import { Component, MeasureEnhanced, Period } from '../../../types/types';
import MeasurementLabel from '../components/MeasurementLabel';
import { MeasurementType } from '../utils';
import { DrilldownMeasureValue } from './DrilldownMeasureValue';
@@ -39,10 +40,10 @@ import MeasuresPanelNoNewCode from './MeasuresPanelNoNewCode';
export interface MeasuresPanelProps {
appLeak?: ApplicationPeriod;
branch?: Branch;
- component: T.Component;
+ component: Component;
loading?: boolean;
- measures?: T.MeasureEnhanced[];
- period?: T.Period;
+ measures?: MeasureEnhanced[];
+ period?: Period;
}
export enum MeasuresPanelTabs {
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelIssueMeasureRow.tsx b/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelIssueMeasureRow.tsx
index a4abcbd51a2..3f33feb1370 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelIssueMeasureRow.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelIssueMeasureRow.tsx
@@ -22,6 +22,7 @@ import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { IssueType } from '../../../types/issues';
+import { Component, MeasureEnhanced } from '../../../types/types';
import IssueLabel from '../components/IssueLabel';
import IssueRating from '../components/IssueRating';
import DebtValue from './DebtValue';
@@ -29,9 +30,9 @@ import SecurityHotspotsReviewed from './SecurityHotspotsReviewed';
export interface MeasuresPanelIssueMeasureRowProps {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
isNewCodeTab: boolean;
- measures: T.MeasureEnhanced[];
+ measures: MeasureEnhanced[];
type: IssueType;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelNoNewCode.tsx b/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelNoNewCode.tsx
index a6eaf3cf941..57532e33143 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelNoNewCode.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelNoNewCode.tsx
@@ -25,11 +25,12 @@ import { translate } from '../../../helpers/l10n';
import { getBaseUrl } from '../../../helpers/system';
import { Branch } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
+import { Component, Period } from '../../../types/types';
export interface MeasuresPanelNoNewCodeProps {
branch?: Branch;
- component: T.Component;
- period?: T.Period;
+ component: Component;
+ period?: Period;
}
export default function MeasuresPanelNoNewCode(props: MeasuresPanelNoNewCodeProps) {
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/NoCodeWarning.tsx b/server/sonar-web/src/main/js/apps/overview/branches/NoCodeWarning.tsx
index 3c03e6fe6c5..bdf4542e5c5 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/NoCodeWarning.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/NoCodeWarning.tsx
@@ -24,11 +24,12 @@ import { translate, translateWithParameters } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { MetricKey } from '../../../types/metrics';
+import { Component, MeasureEnhanced } from '../../../types/types';
interface Props {
branchLike?: BranchLike;
- component: T.Component;
- measures?: T.MeasureEnhanced[];
+ component: Component;
+ measures?: MeasureEnhanced[];
}
export function NoCodeWarning({ branchLike, component, measures }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/ProjectLeakPeriodInfo.tsx b/server/sonar-web/src/main/js/apps/overview/branches/ProjectLeakPeriodInfo.tsx
index 1996f07ae95..3e7a6defbd6 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/ProjectLeakPeriodInfo.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/ProjectLeakPeriodInfo.tsx
@@ -24,9 +24,10 @@ import DateFromNow from '../../../components/intl/DateFromNow';
import { formatterOption } from '../../../components/intl/DateTimeFormatter';
import { translateWithParameters } from '../../../helpers/l10n';
import { getPeriodDate, getPeriodLabel } from '../../../helpers/periods';
+import { Period } from '../../../types/types';
export interface ProjectLeakPeriodInfoProps extends WrappedComponentProps {
- leakPeriod: T.Period;
+ leakPeriod: Period;
}
export function ProjectLeakPeriodInfo(props: ProjectLeakPeriodInfoProps) {
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanel.tsx b/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanel.tsx
index 2954827ba40..128d3b0b0fa 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanel.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanel.tsx
@@ -25,11 +25,12 @@ import { Alert } from '../../../components/ui/Alert';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { QualityGateStatus } from '../../../types/quality-gates';
+import { Component } from '../../../types/types';
import SonarLintPromotion from '../components/SonarLintPromotion';
import QualityGatePanelSection from './QualityGatePanelSection';
export interface QualityGatePanelProps {
- component: Pick<T.Component, 'key' | 'qualifier'>;
+ component: Pick<Component, 'key' | 'qualifier'>;
loading?: boolean;
qgStatuses?: QualityGateStatus[];
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanelSection.tsx b/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanelSection.tsx
index 3470d679423..fe441a3bbda 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanelSection.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/QualityGatePanelSection.tsx
@@ -23,11 +23,12 @@ import { isDiffMetric } from '../../../helpers/measures';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { QualityGateStatus } from '../../../types/quality-gates';
+import { Component } from '../../../types/types';
import QualityGateConditions from '../components/QualityGateConditions';
export interface QualityGatePanelSectionProps {
branchLike?: BranchLike;
- component: Pick<T.Component, 'key' | 'qualifier'>;
+ component: Pick<Component, 'key' | 'qualifier'>;
qgStatus: QualityGateStatus;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/SecurityHotspotsReviewed.tsx b/server/sonar-web/src/main/js/apps/overview/branches/SecurityHotspotsReviewed.tsx
index 01840022a22..63ed0c15e5a 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/SecurityHotspotsReviewed.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/SecurityHotspotsReviewed.tsx
@@ -23,9 +23,10 @@ import CoverageRating from '../../../components/ui/CoverageRating';
import { translate } from '../../../helpers/l10n';
import { findMeasure, formatMeasure } from '../../../helpers/measures';
import { MetricKey } from '../../../types/metrics';
+import { MeasureEnhanced } from '../../../types/types';
export interface SecurityHotspotsReviewedProps {
- measures: T.MeasureEnhanced[];
+ measures: MeasureEnhanced[];
useDiffMetric?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-test.tsx b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-test.tsx
index 08ef85049dd..bdb0f097d2f 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-test.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/BranchOverview-test.tsx
@@ -37,6 +37,7 @@ import { waitAndUpdate } from '../../../../helpers/testUtils';
import { ComponentQualifier } from '../../../../types/component';
import { MetricKey } from '../../../../types/metrics';
import { GraphType } from '../../../../types/project-activity';
+import { Measure, Metric } from '../../../../types/types';
import BranchOverview, { BRANCH_OVERVIEW_ACTIVITY_GRAPH, NO_CI_DETECTED } from '../BranchOverview';
import BranchOverviewRenderer from '../BranchOverviewRenderer';
@@ -49,8 +50,8 @@ jest.mock('../../../../api/measures', () => {
const { mockMeasure, mockMetric } = jest.requireActual('../../../../helpers/testMocks');
return {
getMeasuresWithPeriodAndMetrics: jest.fn((_, metricKeys: string[]) => {
- const metrics: T.Metric[] = [];
- const measures: T.Measure[] = [];
+ const metrics: Metric[] = [];
+ const measures: Measure[] = [];
metricKeys.forEach(key => {
if (key === 'unknown_metric') {
return;
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/Event-test.tsx b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/Event-test.tsx
index 4a67a46209e..10d651996e7 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/Event-test.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/Event-test.tsx
@@ -19,6 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { AnalysisEvent } from '../../../../types/types';
import { Event } from '../Event';
it('should render an event correctly', () => {
@@ -34,7 +35,7 @@ it('should render a version correctly', () => {
});
it('should render rich quality gate event', () => {
- const event: T.AnalysisEvent = {
+ const event: AnalysisEvent = {
category: 'QUALITY_GATE',
key: 'foo1234',
name: '',
diff --git a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/ProjectLeakPeriodInfo-test.tsx b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/ProjectLeakPeriodInfo-test.tsx
index efe108afacd..4f6b86d484c 100644
--- a/server/sonar-web/src/main/js/apps/overview/branches/__tests__/ProjectLeakPeriodInfo-test.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/branches/__tests__/ProjectLeakPeriodInfo-test.tsx
@@ -22,6 +22,7 @@ import { shallow } from 'enzyme';
import * as React from 'react';
import { IntlShape } from 'react-intl';
import { mockPeriod } from '../../../../helpers/testMocks';
+import { Period } from '../../../../types/types';
import { ProjectLeakPeriodInfo } from '../ProjectLeakPeriodInfo';
jest.mock('date-fns', () => {
@@ -61,7 +62,7 @@ it('should render a more precise date', () => {
).toMatchSnapshot();
});
-function shallowRender(period: Partial<T.Period> = {}) {
+function shallowRender(period: Partial<Period> = {}) {
return shallow(
<ProjectLeakPeriodInfo
intl={
diff --git a/server/sonar-web/src/main/js/apps/overview/components/App.tsx b/server/sonar-web/src/main/js/apps/overview/components/App.tsx
index e16b7599eb3..d95d2cfff8c 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/App.tsx
@@ -26,16 +26,17 @@ import { isPullRequest } from '../../../helpers/branch-like';
import { ProjectAlmBindingResponse } from '../../../types/alm-settings';
import { BranchLike } from '../../../types/branch-like';
import { isPortfolioLike } from '../../../types/component';
+import { AppState, Component } from '../../../types/types';
import BranchOverview from '../branches/BranchOverview';
const EmptyOverview = lazyLoadComponent(() => import('./EmptyOverview'));
const PullRequestOverview = lazyLoadComponent(() => import('../pullRequests/PullRequestOverview'));
interface Props {
- appState: Pick<T.AppState, 'branchesEnabled'>;
+ appState: Pick<AppState, 'branchesEnabled'>;
branchLike?: BranchLike;
branchLikes: BranchLike[];
- component: T.Component;
+ component: Component;
isInProgress?: boolean;
isPending?: boolean;
projectBinding?: ProjectAlmBindingResponse;
diff --git a/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx b/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx
index 0008d78886f..ac6038393d8 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/EmptyOverview.tsx
@@ -29,12 +29,13 @@ import { getCurrentUser, Store } from '../../../store/rootReducer';
import { ProjectAlmBindingResponse } from '../../../types/alm-settings';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
+import { Component, CurrentUser } from '../../../types/types';
export interface EmptyOverviewProps {
branchLike?: BranchLike;
branchLikes: BranchLike[];
- component: T.Component;
- currentUser: T.CurrentUser;
+ component: Component;
+ currentUser: CurrentUser;
hasAnalyses?: boolean;
projectBinding?: ProjectAlmBindingResponse;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/components/IssueLabel.tsx b/server/sonar-web/src/main/js/apps/overview/components/IssueLabel.tsx
index 8a9db10118b..b0a2068eaa9 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/IssueLabel.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/IssueLabel.tsx
@@ -27,13 +27,14 @@ import { findMeasure, formatMeasure, localizeMetric } from '../../../helpers/mea
import { getComponentIssuesUrl, getComponentSecurityHotspotsUrl } from '../../../helpers/urls';
import { BranchLike } from '../../../types/branch-like';
import { IssueType } from '../../../types/issues';
+import { Component, MeasureEnhanced } from '../../../types/types';
import { getIssueIconClass, getIssueMetricKey } from '../utils';
export interface IssueLabelProps {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
helpTooltip?: string;
- measures: T.MeasureEnhanced[];
+ measures: MeasureEnhanced[];
type: IssueType;
useDiffMetric?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/components/IssueRating.tsx b/server/sonar-web/src/main/js/apps/overview/components/IssueRating.tsx
index ec85ad822ee..d3238fcbaf8 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/IssueRating.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/IssueRating.tsx
@@ -25,12 +25,13 @@ import Rating from '../../../components/ui/Rating';
import { findMeasure } from '../../../helpers/measures';
import { BranchLike } from '../../../types/branch-like';
import { IssueType } from '../../../types/issues';
+import { Component, MeasureEnhanced } from '../../../types/types';
import { getIssueRatingMetricKey, getIssueRatingName } from '../utils';
export interface IssueRatingProps {
branchLike?: BranchLike;
- component: T.Component;
- measures: T.MeasureEnhanced[];
+ component: Component;
+ measures: MeasureEnhanced[];
type: IssueType;
useDiffMetric?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.tsx b/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.tsx
index c07984784aa..57759228ef1 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.tsx
@@ -26,12 +26,13 @@ import DateFromNow from '../../../components/intl/DateFromNow';
import DateTimeFormatter, { formatterOption } from '../../../components/intl/DateTimeFormatter';
import { translateWithParameters } from '../../../helpers/l10n';
import { getPeriodDate, getPeriodLabel } from '../../../helpers/periods';
+import { Dict, Period } from '../../../types/types';
interface Props {
- period: T.Period;
+ period: Period;
}
-const MODE_INCLUDES_TIME: T.Dict<boolean> = {
+const MODE_INCLUDES_TIME: Dict<boolean> = {
manual_baseline: true,
SPECIFIC_ANALYSIS: true
};
diff --git a/server/sonar-web/src/main/js/apps/overview/components/MeasurementLabel.tsx b/server/sonar-web/src/main/js/apps/overview/components/MeasurementLabel.tsx
index 5e968b8b893..3ac5219934a 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/MeasurementLabel.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/MeasurementLabel.tsx
@@ -24,6 +24,7 @@ import DrilldownLink from '../../../components/shared/DrilldownLink';
import { translate } from '../../../helpers/l10n';
import { findMeasure, formatMeasure } from '../../../helpers/measures';
import { BranchLike } from '../../../types/branch-like';
+import { Component, MeasureEnhanced } from '../../../types/types';
import {
getMeasurementIconClass,
getMeasurementLabelKeys,
@@ -35,8 +36,8 @@ import {
interface Props {
branchLike?: BranchLike;
centered?: boolean;
- component: T.Component;
- measures: T.MeasureEnhanced[];
+ component: Component;
+ measures: MeasureEnhanced[];
type: MeasurementType;
useDiffMetric?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/components/QualityGateCondition.tsx b/server/sonar-web/src/main/js/apps/overview/components/QualityGateCondition.tsx
index a3a191f3ac4..cecbbdac1f9 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/QualityGateCondition.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/QualityGateCondition.tsx
@@ -35,16 +35,17 @@ import { BranchLike } from '../../../types/branch-like';
import { IssueType } from '../../../types/issues';
import { MetricKey } from '../../../types/metrics';
import { QualityGateStatusConditionEnhanced } from '../../../types/quality-gates';
+import { Component, Dict } from '../../../types/types';
interface Props {
branchLike?: BranchLike;
- component: Pick<T.Component, 'key'>;
+ component: Pick<Component, 'key'>;
condition: QualityGateStatusConditionEnhanced;
}
export default class QualityGateCondition extends React.PureComponent<Props> {
- getIssuesUrl = (sinceLeakPeriod: boolean, customQuery: T.Dict<string>) => {
- const query: T.Dict<string | undefined> = {
+ getIssuesUrl = (sinceLeakPeriod: boolean, customQuery: Dict<string>) => {
+ const query: Dict<string | undefined> = {
resolved: 'false',
...getBranchLikeQuery(this.props.branchLike),
...customQuery
@@ -56,7 +57,7 @@ export default class QualityGateCondition extends React.PureComponent<Props> {
};
getUrlForSecurityHotspot(sinceLeakPeriod: boolean) {
- const query: T.Dict<string | undefined> = {
+ const query: Dict<string | undefined> = {
...getBranchLikeQuery(this.props.branchLike)
};
if (sinceLeakPeriod) {
@@ -96,7 +97,7 @@ export default class QualityGateCondition extends React.PureComponent<Props> {
const metricKey = condition.measure.metric.key;
- const METRICS_TO_URL_MAPPING: T.Dict<() => Location> = {
+ const METRICS_TO_URL_MAPPING: Dict<() => Location> = {
[MetricKey.reliability_rating]: () =>
this.getUrlForBugsOrVulnerabilities(IssueType.Bug, false),
[MetricKey.new_reliability_rating]: () =>
diff --git a/server/sonar-web/src/main/js/apps/overview/components/QualityGateConditions.tsx b/server/sonar-web/src/main/js/apps/overview/components/QualityGateConditions.tsx
index 77e6323bb87..5cd2452c863 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/QualityGateConditions.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/QualityGateConditions.tsx
@@ -24,13 +24,14 @@ import ChevronDownIcon from '../../../components/icons/ChevronDownIcon';
import { translateWithParameters } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
import { QualityGateStatusConditionEnhanced } from '../../../types/quality-gates';
+import { Component } from '../../../types/types';
import QualityGateCondition from './QualityGateCondition';
const LEVEL_ORDER = ['ERROR', 'WARN'];
export interface QualityGateConditionsProps {
branchLike?: BranchLike;
- component: Pick<T.Component, 'key'>;
+ component: Pick<Component, 'key'>;
collapsible?: boolean;
failedConditions: QualityGateStatusConditionEnhanced[];
}
diff --git a/server/sonar-web/src/main/js/apps/overview/components/SonarLintPromotion.tsx b/server/sonar-web/src/main/js/apps/overview/components/SonarLintPromotion.tsx
index 32a6ce2a627..7796778e690 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/SonarLintPromotion.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/SonarLintPromotion.tsx
@@ -24,9 +24,10 @@ import SonarLintIcon from '../../../components/icons/SonarLintIcon';
import { translate } from '../../../helpers/l10n';
import { MetricKey } from '../../../types/metrics';
import { QualityGateStatusCondition } from '../../../types/quality-gates';
+import { CurrentUser } from '../../../types/types';
export interface SonarLintPromotionProps {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
qgConditions?: QualityGateStatusCondition[];
}
diff --git a/server/sonar-web/src/main/js/apps/overview/components/__tests__/LeakPeriodLegend-test.tsx b/server/sonar-web/src/main/js/apps/overview/components/__tests__/LeakPeriodLegend-test.tsx
index 76929c951e9..44a2e8eac02 100644
--- a/server/sonar-web/src/main/js/apps/overview/components/__tests__/LeakPeriodLegend-test.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/components/__tests__/LeakPeriodLegend-test.tsx
@@ -21,6 +21,7 @@ import { differenceInDays } from 'date-fns';
import { shallow } from 'enzyme';
import * as React from 'react';
import { IntlShape } from 'react-intl';
+import { Period } from '../../../../types/types';
import { LeakPeriodLegend } from '../LeakPeriodLegend';
jest.mock('date-fns', () => {
@@ -60,7 +61,7 @@ it('should render a more precise date', () => {
).toMatchSnapshot();
});
-function getWrapper(period: Partial<T.Period> = {}) {
+function getWrapper(period: Partial<Period> = {}) {
return shallow(
<LeakPeriodLegend
intl={
diff --git a/server/sonar-web/src/main/js/apps/overview/pullRequests/AfterMergeEstimate.tsx b/server/sonar-web/src/main/js/apps/overview/pullRequests/AfterMergeEstimate.tsx
index 333f4947b1e..437a0499532 100644
--- a/server/sonar-web/src/main/js/apps/overview/pullRequests/AfterMergeEstimate.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/pullRequests/AfterMergeEstimate.tsx
@@ -21,11 +21,12 @@ import classNames from 'classnames';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { findMeasure, formatMeasure } from '../../../helpers/measures';
+import { MeasureEnhanced } from '../../../types/types';
import { getMeasurementAfterMergeMetricKey, MeasurementType } from '../utils';
export interface AfterMergeEstimateProps {
className?: string;
- measures: T.MeasureEnhanced[];
+ measures: MeasureEnhanced[];
type: MeasurementType;
}
diff --git a/server/sonar-web/src/main/js/apps/overview/pullRequests/LargeQualityGateBadge.tsx b/server/sonar-web/src/main/js/apps/overview/pullRequests/LargeQualityGateBadge.tsx
index 307c163b893..e9cc50fa1b1 100644
--- a/server/sonar-web/src/main/js/apps/overview/pullRequests/LargeQualityGateBadge.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/pullRequests/LargeQualityGateBadge.tsx
@@ -26,10 +26,11 @@ import HelpTooltip from '../../../components/controls/HelpTooltip';
import HelpIcon from '../../../components/icons/HelpIcon';
import { translate } from '../../../helpers/l10n';
import { getQualityGatesUrl, getQualityGateUrl } from '../../../helpers/urls';
+import { Component, Status } from '../../../types/types';
interface Props {
- component: T.Component;
- level?: T.Status;
+ component: Component;
+ level?: Status;
}
export function LargeQualityGateBadge({ component, level }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestOverview.tsx b/server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestOverview.tsx
index d6a0cdcb7ef..270f52aea34 100644
--- a/server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestOverview.tsx
+++ b/server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestOverview.tsx
@@ -33,6 +33,7 @@ import { getBranchStatusByBranchLike, Store } from '../../../store/rootReducer';
import { BranchLike, PullRequest } from '../../../types/branch-like';
import { IssueType } from '../../../types/issues';
import { QualityGateStatusCondition } from '../../../types/quality-gates';
+import { Component, MeasureEnhanced, Status } from '../../../types/types';
import IssueLabel from '../components/IssueLabel';
import IssueRating from '../components/IssueRating';
import MeasurementLabel from '../components/MeasurementLabel';
@@ -46,7 +47,7 @@ import LargeQualityGateBadge from './LargeQualityGateBadge';
interface StateProps {
conditions?: QualityGateStatusCondition[];
ignoredConditions?: boolean;
- status?: T.Status;
+ status?: Status;
}
interface DispatchProps {
@@ -55,14 +56,14 @@ interface DispatchProps {
interface OwnProps {
branchLike: PullRequest;
- component: T.Component;
+ component: Component;
}
type Props = StateProps & DispatchProps & OwnProps;
interface State {
loading: boolean;
- measures: T.MeasureEnhanced[];
+ measures: MeasureEnhanced[];
}
export class PullRequestOverview extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx
index 4a2c0629eb5..c6ed95e5993 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx
@@ -28,13 +28,14 @@ import ActionsDropdown, { ActionsDropdownItem } from '../../../components/contro
import { Router, withRouter } from '../../../components/hoc/withRouter';
import QualifierIcon from '../../../components/icons/QualifierIcon';
import { translate } from '../../../helpers/l10n';
+import { PermissionTemplate } from '../../../types/types';
import { PERMISSION_TEMPLATES_PATH } from '../utils';
import DeleteForm from './DeleteForm';
import Form from './Form';
interface Props {
fromDetails?: boolean;
- permissionTemplate: T.PermissionTemplate;
+ permissionTemplate: PermissionTemplate;
refresh: () => void;
router: Pick<Router, 'replace'>;
topQualifiers: string[];
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/App.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/App.tsx
index 1502c621064..bd212fcf492 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/App.tsx
@@ -25,6 +25,7 @@ import { getPermissionTemplates } from '../../../api/permissions';
import Suggestions from '../../../app/components/embed-docs-modal/Suggestions';
import { translate } from '../../../helpers/l10n';
import { getAppState, Store } from '../../../store/rootReducer';
+import { Permission, PermissionTemplate } from '../../../types/types';
import '../../permissions/styles.css';
import { mergeDefaultsToTemplates, mergePermissionsToTemplates, sortPermissions } from '../utils';
import Home from './Home';
@@ -37,8 +38,8 @@ interface Props {
interface State {
ready: boolean;
- permissions: T.Permission[];
- permissionTemplates: T.PermissionTemplate[];
+ permissions: Permission[];
+ permissionTemplates: PermissionTemplate[];
}
export class App extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/Defaults.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/Defaults.tsx
index 6989f2ac20d..4281bf6640b 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/Defaults.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/Defaults.tsx
@@ -20,9 +20,10 @@
import { sortBy } from 'lodash';
import * as React from 'react';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { PermissionTemplate } from '../../../types/types';
interface Props {
- template: T.PermissionTemplate;
+ template: PermissionTemplate;
}
export default function Defaults({ template }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/DeleteForm.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/DeleteForm.tsx
index e7ccb518868..f4bd8ef0967 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/DeleteForm.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/DeleteForm.tsx
@@ -22,11 +22,12 @@ import { ResetButtonLink, SubmitButton } from '../../../components/controls/butt
import SimpleModal from '../../../components/controls/SimpleModal';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { PermissionTemplate } from '../../../types/types';
interface Props {
onClose: () => void;
onSubmit: () => Promise<void>;
- permissionTemplate: T.PermissionTemplate;
+ permissionTemplate: PermissionTemplate;
}
export default function DeleteForm({ onClose, onSubmit, permissionTemplate: t }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/Home.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/Home.tsx
index 398a06773bb..a5bbfd3d39e 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/Home.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/Home.tsx
@@ -20,12 +20,13 @@
import * as React from 'react';
import { Helmet } from 'react-helmet-async';
import { translate } from '../../../helpers/l10n';
+import { Permission, PermissionTemplate } from '../../../types/types';
import Header from './Header';
import List from './List';
interface Props {
- permissionTemplates: T.PermissionTemplate[];
- permissions: T.Permission[];
+ permissionTemplates: PermissionTemplate[];
+ permissions: Permission[];
ready: boolean;
refresh: () => Promise<void>;
topQualifiers: string[];
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/List.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/List.tsx
index 526d8802e81..b208770810f 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/List.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/List.tsx
@@ -18,12 +18,13 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { Permission, PermissionTemplate } from '../../../types/types';
import ListHeader from './ListHeader';
import ListItem from './ListItem';
interface Props {
- permissionTemplates: T.PermissionTemplate[];
- permissions: T.Permission[];
+ permissionTemplates: PermissionTemplate[];
+ permissions: Permission[];
refresh: () => Promise<void>;
topQualifiers: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/ListHeader.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/ListHeader.tsx
index 3ce076cdb3e..e633c1a23e9 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/ListHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/ListHeader.tsx
@@ -22,13 +22,14 @@ import InstanceMessage from '../../../components/common/InstanceMessage';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import { Alert } from '../../../components/ui/Alert';
import { translate } from '../../../helpers/l10n';
+import { Permission } from '../../../types/types';
interface Props {
- permissions: T.Permission[];
+ permissions: Permission[];
}
export default class ListHeader extends React.PureComponent<Props> {
- renderTooltip(permission: T.Permission) {
+ renderTooltip(permission: Permission) {
return permission.key === 'user' || permission.key === 'codeviewer' ? (
<div>
<InstanceMessage message={translate('projects_role', permission.key, 'desc')} />
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/ListItem.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/ListItem.tsx
index 7c4383463fa..a88771782a1 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/ListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/ListItem.tsx
@@ -18,13 +18,14 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { PermissionTemplate } from '../../../types/types';
import ActionsCell from './ActionsCell';
import NameCell from './NameCell';
import PermissionCell from './PermissionCell';
interface Props {
refresh: () => Promise<void>;
- template: T.PermissionTemplate;
+ template: PermissionTemplate;
topQualifiers: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/NameCell.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/NameCell.tsx
index d1c52770255..1da9847cc47 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/NameCell.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/NameCell.tsx
@@ -19,11 +19,12 @@
*/
import * as React from 'react';
import { Link } from 'react-router';
+import { PermissionTemplate } from '../../../types/types';
import { PERMISSION_TEMPLATES_PATH } from '../utils';
import Defaults from './Defaults';
interface Props {
- template: T.PermissionTemplate;
+ template: PermissionTemplate;
}
export default function NameCell({ template }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx
index a865e508377..05450518584 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import { Helmet } from 'react-helmet-async';
import * as api from '../../../api/permissions';
import { translate } from '../../../helpers/l10n';
+import { PermissionGroup, PermissionTemplate, PermissionUser } from '../../../types/types';
import HoldersList from '../../permissions/shared/components/HoldersList';
import SearchForm from '../../permissions/shared/components/SearchForm';
import {
@@ -32,17 +33,17 @@ import TemplateHeader from './TemplateHeader';
interface Props {
refresh: () => void;
- template: T.PermissionTemplate;
+ template: PermissionTemplate;
topQualifiers: string[];
}
interface State {
filter: string;
- groups: T.PermissionGroup[];
+ groups: PermissionGroup[];
loading: boolean;
query: string;
selectedPermission?: string;
- users: T.PermissionUser[];
+ users: PermissionUser[];
}
export default class Template extends React.PureComponent<Props, State> {
@@ -95,7 +96,7 @@ export default class Template extends React.PureComponent<Props, State> {
});
};
- handleToggleUser = (user: T.PermissionUser, permission: string) => {
+ handleToggleUser = (user: PermissionUser, permission: string) => {
if (user.login === '<creator>') {
return this.handleToggleProjectCreator(user, permission);
}
@@ -113,7 +114,7 @@ export default class Template extends React.PureComponent<Props, State> {
return request.then(() => this.requestHolders()).then(this.props.refresh);
};
- handleToggleProjectCreator = (user: T.PermissionUser, permission: string) => {
+ handleToggleProjectCreator = (user: PermissionUser, permission: string) => {
const { template } = this.props;
const hasPermission = user.permissions.includes(permission);
const request = hasPermission
@@ -122,7 +123,7 @@ export default class Template extends React.PureComponent<Props, State> {
return request.then(() => this.requestHolders()).then(this.props.refresh);
};
- handleToggleGroup = (group: T.PermissionGroup, permission: string) => {
+ handleToggleGroup = (group: PermissionGroup, permission: string) => {
const { template } = this.props;
const hasPermission = group.permissions.includes(permission);
const data = {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateDetails.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateDetails.tsx
index 564c118fd24..478cc307dd1 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateDetails.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateDetails.tsx
@@ -18,10 +18,11 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { PermissionTemplate } from '../../../types/types';
import Defaults from './Defaults';
interface Props {
- template: T.PermissionTemplate;
+ template: PermissionTemplate;
}
export default function TemplateDetails({ template }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateHeader.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateHeader.tsx
index c0cb3b92d3d..446d07f9644 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/TemplateHeader.tsx
@@ -20,13 +20,14 @@
import * as React from 'react';
import { Link } from 'react-router';
import { translate } from '../../../helpers/l10n';
+import { PermissionTemplate } from '../../../types/types';
import { PERMISSION_TEMPLATES_PATH } from '../utils';
import ActionsCell from './ActionsCell';
interface Props {
loading: boolean;
refresh: () => void;
- template: T.PermissionTemplate;
+ template: PermissionTemplate;
topQualifiers: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/Defaults-test.tsx b/server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/Defaults-test.tsx
index 988f38e143c..4e5ac549534 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/Defaults-test.tsx
+++ b/server/sonar-web/src/main/js/apps/permission-templates/components/__tests__/Defaults-test.tsx
@@ -19,9 +19,10 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { PermissionTemplate } from '../../../../types/types';
import Defaults from '../Defaults';
-const SAMPLE: T.PermissionTemplate = {
+const SAMPLE: PermissionTemplate = {
createdAt: '2018-01-01',
defaultFor: [],
id: 'id',
diff --git a/server/sonar-web/src/main/js/apps/permission-templates/utils.ts b/server/sonar-web/src/main/js/apps/permission-templates/utils.ts
index 159470adc43..0225794fa86 100644
--- a/server/sonar-web/src/main/js/apps/permission-templates/utils.ts
+++ b/server/sonar-web/src/main/js/apps/permission-templates/utils.ts
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { sortBy } from 'lodash';
+import { Permission, PermissionTemplate } from '../../types/types';
export const PERMISSIONS_ORDER = [
'user',
@@ -30,14 +31,14 @@ export const PERMISSIONS_ORDER = [
export const PERMISSION_TEMPLATES_PATH = '/permission_templates';
-export function sortPermissions(permissions: T.Permission[]) {
+export function sortPermissions(permissions: Permission[]) {
return sortBy(permissions, p => PERMISSIONS_ORDER.indexOf(p.key));
}
export function mergePermissionsToTemplates(
- permissionTemplates: T.PermissionTemplate[],
- basePermissions: T.Permission[]
-): T.PermissionTemplate[] {
+ permissionTemplates: PermissionTemplate[],
+ basePermissions: Permission[]
+): PermissionTemplate[] {
return permissionTemplates.map(permissionTemplate => {
// it's important to keep the order of the permission template's permissions
// the same as the order of base permissions
@@ -53,9 +54,9 @@ export function mergePermissionsToTemplates(
}
export function mergeDefaultsToTemplates(
- permissionTemplates: T.PermissionTemplate[],
+ permissionTemplates: PermissionTemplate[],
defaultTemplates: Array<{ templateId: string; qualifier: string }> = []
-): T.PermissionTemplate[] {
+): PermissionTemplate[] {
return permissionTemplates.map(permissionTemplate => {
const defaultFor: string[] = [];
diff --git a/server/sonar-web/src/main/js/apps/permissions/global/components/AllHoldersList.tsx b/server/sonar-web/src/main/js/apps/permissions/global/components/AllHoldersList.tsx
index fa35299f732..68a985e89e0 100644
--- a/server/sonar-web/src/main/js/apps/permissions/global/components/AllHoldersList.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/global/components/AllHoldersList.tsx
@@ -22,6 +22,7 @@ import { connect } from 'react-redux';
import ListFooter from '../../../../components/controls/ListFooter';
import { getAppState, Store } from '../../../../store/rootReducer';
import { ComponentQualifier } from '../../../../types/component';
+import { AppState, Paging, PermissionGroup, PermissionUser } from '../../../../types/types';
import HoldersList from '../../shared/components/HoldersList';
import SearchForm from '../../shared/components/SearchForm';
import {
@@ -31,15 +32,15 @@ import {
} from '../../utils';
interface StateProps {
- appState: Pick<T.AppState, 'qualifiers'>;
+ appState: Pick<AppState, 'qualifiers'>;
}
interface OwnProps {
filter: string;
grantPermissionToGroup: (groupName: string, permission: string) => Promise<void>;
grantPermissionToUser: (login: string, permission: string) => Promise<void>;
- groups: T.PermissionGroup[];
- groupsPaging?: T.Paging;
+ groups: PermissionGroup[];
+ groupsPaging?: Paging;
loadHolders: () => void;
loading?: boolean;
onLoadMore: () => void;
@@ -48,14 +49,14 @@ interface OwnProps {
query: string;
revokePermissionFromGroup: (groupName: string, permission: string) => Promise<void>;
revokePermissionFromUser: (login: string, permission: string) => Promise<void>;
- users: T.PermissionUser[];
- usersPaging?: T.Paging;
+ users: PermissionUser[];
+ usersPaging?: Paging;
}
type Props = StateProps & OwnProps;
export class AllHoldersList extends React.PureComponent<Props> {
- handleToggleUser = (user: T.PermissionUser, permission: string) => {
+ handleToggleUser = (user: PermissionUser, permission: string) => {
const hasPermission = user.permissions.includes(permission);
if (hasPermission) {
return this.props.revokePermissionFromUser(user.login, permission);
@@ -64,7 +65,7 @@ export class AllHoldersList extends React.PureComponent<Props> {
}
};
- handleToggleGroup = (group: T.PermissionGroup, permission: string) => {
+ handleToggleGroup = (group: PermissionGroup, permission: string) => {
const hasPermission = group.permissions.includes(permission);
if (hasPermission) {
diff --git a/server/sonar-web/src/main/js/apps/permissions/global/components/App.tsx b/server/sonar-web/src/main/js/apps/permissions/global/components/App.tsx
index d500c870b98..e51350c3583 100644
--- a/server/sonar-web/src/main/js/apps/permissions/global/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/global/components/App.tsx
@@ -23,18 +23,19 @@ import { Helmet } from 'react-helmet-async';
import * as api from '../../../../api/permissions';
import Suggestions from '../../../../app/components/embed-docs-modal/Suggestions';
import { translate } from '../../../../helpers/l10n';
+import { Paging, PermissionGroup, PermissionUser } from '../../../../types/types';
import '../../styles.css';
import AllHoldersList from './AllHoldersList';
import PageHeader from './PageHeader';
interface State {
filter: 'all' | 'groups' | 'users';
- groups: T.PermissionGroup[];
- groupsPaging?: T.Paging;
+ groups: PermissionGroup[];
+ groupsPaging?: Paging;
loading: boolean;
query: string;
- users: T.PermissionUser[];
- usersPaging?: T.Paging;
+ users: PermissionUser[];
+ usersPaging?: Paging;
}
export default class App extends React.PureComponent<{}, State> {
@@ -63,7 +64,7 @@ export default class App extends React.PureComponent<{}, State> {
loadUsersAndGroups = (userPage?: number, groupsPage?: number) => {
const { filter, query } = this.state;
- const getUsers: Promise<{ paging?: T.Paging; users: T.PermissionUser[] }> =
+ const getUsers: Promise<{ paging?: Paging; users: PermissionUser[] }> =
filter !== 'groups'
? api.getGlobalPermissionsUsers({
q: query || undefined,
@@ -71,7 +72,7 @@ export default class App extends React.PureComponent<{}, State> {
})
: Promise.resolve({ paging: undefined, users: [] });
- const getGroups: Promise<{ paging?: T.Paging; groups: T.PermissionGroup[] }> =
+ const getGroups: Promise<{ paging?: Paging; groups: PermissionGroup[] }> =
filter !== 'users'
? api.getGlobalPermissionsGroups({
q: query || undefined,
@@ -124,7 +125,7 @@ export default class App extends React.PureComponent<{}, State> {
this.setState({ query }, this.loadHolders);
};
- addPermissionToGroup = (groups: T.PermissionGroup[], group: string, permission: string) => {
+ addPermissionToGroup = (groups: PermissionGroup[], group: string, permission: string) => {
return groups.map(candidate =>
candidate.name === group
? { ...candidate, permissions: [...candidate.permissions, permission] }
@@ -132,7 +133,7 @@ export default class App extends React.PureComponent<{}, State> {
);
};
- addPermissionToUser = (users: T.PermissionUser[], user: string, permission: string) => {
+ addPermissionToUser = (users: PermissionUser[], user: string, permission: string) => {
return users.map(candidate =>
candidate.login === user
? { ...candidate, permissions: [...candidate.permissions, permission] }
@@ -140,7 +141,7 @@ export default class App extends React.PureComponent<{}, State> {
);
};
- removePermissionFromGroup = (groups: T.PermissionGroup[], group: string, permission: string) => {
+ removePermissionFromGroup = (groups: PermissionGroup[], group: string, permission: string) => {
return groups.map(candidate =>
candidate.name === group
? { ...candidate, permissions: without(candidate.permissions, permission) }
@@ -148,7 +149,7 @@ export default class App extends React.PureComponent<{}, State> {
);
};
- removePermissionFromUser = (users: T.PermissionUser[], user: string, permission: string) => {
+ removePermissionFromUser = (users: PermissionUser[], user: string, permission: string) => {
return users.map(candidate =>
candidate.login === user
? { ...candidate, permissions: without(candidate.permissions, permission) }
diff --git a/server/sonar-web/src/main/js/apps/permissions/project/components/AllHoldersList.tsx b/server/sonar-web/src/main/js/apps/permissions/project/components/AllHoldersList.tsx
index f082f4702be..744b9945156 100644
--- a/server/sonar-web/src/main/js/apps/permissions/project/components/AllHoldersList.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/project/components/AllHoldersList.tsx
@@ -20,17 +20,24 @@
import { without } from 'lodash';
import * as React from 'react';
import ListFooter from '../../../../components/controls/ListFooter';
+import {
+ Component,
+ Paging,
+ PermissionGroup,
+ PermissionUser,
+ Visibility
+} from '../../../../types/types';
import HoldersList from '../../shared/components/HoldersList';
import SearchForm from '../../shared/components/SearchForm';
import { convertToPermissionDefinitions, PERMISSIONS_ORDER_BY_QUALIFIER } from '../../utils';
interface Props {
- component: T.Component;
+ component: Component;
filter: string;
grantPermissionToGroup: (group: string, permission: string) => Promise<void>;
grantPermissionToUser: (user: string, permission: string) => Promise<void>;
- groups: T.PermissionGroup[];
- groupsPaging?: T.Paging;
+ groups: PermissionGroup[];
+ groupsPaging?: Paging;
onLoadMore: () => void;
onFilterChange: (filter: string) => void;
onPermissionSelect: (permissions?: string) => void;
@@ -39,13 +46,13 @@ interface Props {
revokePermissionFromGroup: (group: string, permission: string) => Promise<void>;
revokePermissionFromUser: (user: string, permission: string) => Promise<void>;
selectedPermission?: string;
- users: T.PermissionUser[];
- usersPaging?: T.Paging;
- visibility?: T.Visibility;
+ users: PermissionUser[];
+ usersPaging?: Paging;
+ visibility?: Visibility;
}
export default class AllHoldersList extends React.PureComponent<Props> {
- handleToggleUser = (user: T.PermissionUser, permission: string) => {
+ handleToggleUser = (user: PermissionUser, permission: string) => {
const hasPermission = user.permissions.includes(permission);
if (hasPermission) {
@@ -55,7 +62,7 @@ export default class AllHoldersList extends React.PureComponent<Props> {
}
};
- handleToggleGroup = (group: T.PermissionGroup, permission: string) => {
+ handleToggleGroup = (group: PermissionGroup, permission: string) => {
const hasPermission = group.permissions.includes(permission);
if (hasPermission) {
diff --git a/server/sonar-web/src/main/js/apps/permissions/project/components/App.tsx b/server/sonar-web/src/main/js/apps/permissions/project/components/App.tsx
index 9b3fa2b5df4..5a318e7dbb8 100644
--- a/server/sonar-web/src/main/js/apps/permissions/project/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/project/components/App.tsx
@@ -23,26 +23,27 @@ import { Helmet } from 'react-helmet-async';
import * as api from '../../../../api/permissions';
import VisibilitySelector from '../../../../components/common/VisibilitySelector';
import { translate } from '../../../../helpers/l10n';
+import { Component, Paging, PermissionGroup, PermissionUser } from '../../../../types/types';
import '../../styles.css';
import AllHoldersList from './AllHoldersList';
import PageHeader from './PageHeader';
import PublicProjectDisclaimer from './PublicProjectDisclaimer';
interface Props {
- component: T.Component;
- onComponentChange: (changes: Partial<T.Component>) => void;
+ component: Component;
+ onComponentChange: (changes: Partial<Component>) => void;
}
interface State {
disclaimer: boolean;
filter: string;
- groups: T.PermissionGroup[];
- groupsPaging?: T.Paging;
+ groups: PermissionGroup[];
+ groupsPaging?: Paging;
loading: boolean;
query: string;
selectedPermission?: string;
- users: T.PermissionUser[];
- usersPaging?: T.Paging;
+ users: PermissionUser[];
+ usersPaging?: Paging;
}
export default class App extends React.PureComponent<Props, State> {
@@ -79,7 +80,7 @@ export default class App extends React.PureComponent<Props, State> {
const { component } = this.props;
const { filter, query, selectedPermission } = this.state;
- const getUsers: Promise<{ paging?: T.Paging; users: T.PermissionUser[] }> =
+ const getUsers: Promise<{ paging?: Paging; users: PermissionUser[] }> =
filter !== 'groups'
? api.getPermissionsUsersForComponent({
projectKey: component.key,
@@ -89,7 +90,7 @@ export default class App extends React.PureComponent<Props, State> {
})
: Promise.resolve({ paging: undefined, users: [] });
- const getGroups: Promise<{ paging?: T.Paging; groups: T.PermissionGroup[] }> =
+ const getGroups: Promise<{ paging?: Paging; groups: PermissionGroup[] }> =
filter !== 'users'
? api.getPermissionsGroupsForComponent({
projectKey: component.key,
diff --git a/server/sonar-web/src/main/js/apps/permissions/project/components/ApplyTemplate.tsx b/server/sonar-web/src/main/js/apps/permissions/project/components/ApplyTemplate.tsx
index 15df2627efd..fb40ec73f7e 100644
--- a/server/sonar-web/src/main/js/apps/permissions/project/components/ApplyTemplate.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/project/components/ApplyTemplate.tsx
@@ -27,6 +27,7 @@ import DeferredSpinner from '../../../../components/ui/DeferredSpinner';
import MandatoryFieldMarker from '../../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../../components/ui/MandatoryFieldsExplanation';
import { translate, translateWithParameters } from '../../../../helpers/l10n';
+import { PermissionTemplate } from '../../../../types/types';
interface Props {
onApply?: () => void;
@@ -38,7 +39,7 @@ interface State {
done: boolean;
loading: boolean;
permissionTemplate?: string;
- permissionTemplates?: T.PermissionTemplate[];
+ permissionTemplates?: PermissionTemplate[];
}
export default class ApplyTemplate extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/permissions/project/components/PageHeader.tsx b/server/sonar-web/src/main/js/apps/permissions/project/components/PageHeader.tsx
index 242eebafe26..1adc92fb2fc 100644
--- a/server/sonar-web/src/main/js/apps/permissions/project/components/PageHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/project/components/PageHeader.tsx
@@ -21,10 +21,11 @@ import * as React from 'react';
import { Button } from '../../../../components/controls/buttons';
import { translate } from '../../../../helpers/l10n';
import { isApplication, isPortfolioLike } from '../../../../types/component';
+import { Component } from '../../../../types/types';
import ApplyTemplate from './ApplyTemplate';
interface Props {
- component: T.Component;
+ component: Component;
loadHolders: () => void;
loading: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/components/GroupHolder.tsx b/server/sonar-web/src/main/js/apps/permissions/shared/components/GroupHolder.tsx
index 98c52700247..8a93bf269ea 100644
--- a/server/sonar-web/src/main/js/apps/permissions/shared/components/GroupHolder.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/shared/components/GroupHolder.tsx
@@ -20,13 +20,14 @@
import { without } from 'lodash';
import * as React from 'react';
import GroupIcon from '../../../../components/icons/GroupIcon';
+import { PermissionDefinitions, PermissionGroup } from '../../../../types/types';
import { isPermissionDefinitionGroup } from '../../utils';
import PermissionCell from './PermissionCell';
interface Props {
- group: T.PermissionGroup;
- onToggle: (group: T.PermissionGroup, permission: string) => Promise<void>;
- permissions: T.PermissionDefinitions;
+ group: PermissionGroup;
+ onToggle: (group: PermissionGroup, permission: string) => Promise<void>;
+ permissions: PermissionDefinitions;
selectedPermission?: string;
}
diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/components/HoldersList.tsx b/server/sonar-web/src/main/js/apps/permissions/shared/components/HoldersList.tsx
index bcce4e0b0b7..b4ce6650e9a 100644
--- a/server/sonar-web/src/main/js/apps/permissions/shared/components/HoldersList.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/shared/components/HoldersList.tsx
@@ -20,6 +20,12 @@
import { partition, sortBy } from 'lodash';
import * as React from 'react';
import { translate } from '../../../../helpers/l10n';
+import {
+ Dict,
+ PermissionDefinitions,
+ PermissionGroup,
+ PermissionUser
+} from '../../../../types/types';
import { isPermissionDefinitionGroup } from '../../utils';
import GroupHolder from './GroupHolder';
import PermissionHeader from './PermissionHeader';
@@ -27,20 +33,20 @@ import UserHolder from './UserHolder';
interface Props {
filter?: string;
- groups: T.PermissionGroup[];
+ groups: PermissionGroup[];
loading?: boolean;
onSelectPermission?: (permission: string) => void;
- onToggleGroup: (group: T.PermissionGroup, permission: string) => Promise<void>;
- onToggleUser: (user: T.PermissionUser, permission: string) => Promise<void>;
- permissions: T.PermissionDefinitions;
+ onToggleGroup: (group: PermissionGroup, permission: string) => Promise<void>;
+ onToggleUser: (user: PermissionUser, permission: string) => Promise<void>;
+ permissions: PermissionDefinitions;
query?: string;
selectedPermission?: string;
showPublicProjectsWarning?: boolean;
- users: T.PermissionUser[];
+ users: PermissionUser[];
}
interface State {
- initialPermissionsCount: T.Dict<number>;
+ initialPermissionsCount: Dict<number>;
}
export default class HoldersList extends React.PureComponent<Props, State> {
state: State = { initialPermissionsCount: {} };
@@ -50,11 +56,11 @@ export default class HoldersList extends React.PureComponent<Props, State> {
}
}
- isPermissionUser(item: T.PermissionGroup | T.PermissionUser): item is T.PermissionUser {
- return (item as T.PermissionUser).login !== undefined;
+ isPermissionUser(item: PermissionGroup | PermissionUser): item is PermissionUser {
+ return (item as PermissionUser).login !== undefined;
}
- handleGroupToggle = (group: T.PermissionGroup, permission: string) => {
+ handleGroupToggle = (group: PermissionGroup, permission: string) => {
const key = group.id || group.name;
if (this.state.initialPermissionsCount[key] === undefined) {
this.setState(state => ({
@@ -67,7 +73,7 @@ export default class HoldersList extends React.PureComponent<Props, State> {
return this.props.onToggleGroup(group, permission);
};
- handleUserToggle = (user: T.PermissionUser, permission: string) => {
+ handleUserToggle = (user: PermissionUser, permission: string) => {
if (this.state.initialPermissionsCount[user.login] === undefined) {
this.setState(state => ({
initialPermissionsCount: {
@@ -79,7 +85,7 @@ export default class HoldersList extends React.PureComponent<Props, State> {
return this.props.onToggleUser(user, permission);
};
- getItemInitialPermissionsCount = (item: T.PermissionGroup | T.PermissionUser) => {
+ getItemInitialPermissionsCount = (item: PermissionGroup | PermissionUser) => {
const key = this.isPermissionUser(item) ? item.login : item.id || item.name;
return this.state.initialPermissionsCount[key] !== undefined
? this.state.initialPermissionsCount[key]
@@ -95,7 +101,7 @@ export default class HoldersList extends React.PureComponent<Props, State> {
);
}
- renderItem(item: T.PermissionUser | T.PermissionGroup, permissions: T.PermissionDefinitions) {
+ renderItem(item: PermissionUser | PermissionGroup, permissions: PermissionDefinitions) {
return this.isPermissionUser(item) ? (
<UserHolder
key={`user-${item.login}`}
diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionCell.tsx b/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionCell.tsx
index 66d667f147b..2a240cfa0c8 100644
--- a/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionCell.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionCell.tsx
@@ -20,13 +20,19 @@
import classNames from 'classnames';
import * as React from 'react';
import Checkbox from '../../../../components/controls/Checkbox';
+import {
+ PermissionDefinition,
+ PermissionDefinitionGroup,
+ PermissionGroup,
+ PermissionUser
+} from '../../../../types/types';
import { isPermissionDefinitionGroup } from '../../utils';
interface Props {
loading: string[];
onCheck: (checked: boolean, permission?: string) => void;
- permission: T.PermissionDefinition | T.PermissionDefinitionGroup;
- permissionItem: T.PermissionGroup | T.PermissionUser;
+ permission: PermissionDefinition | PermissionDefinitionGroup;
+ permissionItem: PermissionGroup | PermissionUser;
selectedPermission?: string;
}
diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx b/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx
index e0012f41af1..ed44cf2d870 100644
--- a/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx
@@ -24,11 +24,12 @@ import HelpTooltip from '../../../../components/controls/HelpTooltip';
import Tooltip from '../../../../components/controls/Tooltip';
import { Alert } from '../../../../components/ui/Alert';
import { translate, translateWithParameters } from '../../../../helpers/l10n';
+import { PermissionDefinition, PermissionDefinitionGroup } from '../../../../types/types';
import { isPermissionDefinitionGroup } from '../../utils';
interface Props {
onSelectPermission?: (permission: string) => void;
- permission: T.PermissionDefinition | T.PermissionDefinitionGroup;
+ permission: PermissionDefinition | PermissionDefinitionGroup;
selectedPermission?: string;
showPublicProjectsWarning?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/components/UserHolder.tsx b/server/sonar-web/src/main/js/apps/permissions/shared/components/UserHolder.tsx
index 8f767da002f..6345c4af12c 100644
--- a/server/sonar-web/src/main/js/apps/permissions/shared/components/UserHolder.tsx
+++ b/server/sonar-web/src/main/js/apps/permissions/shared/components/UserHolder.tsx
@@ -21,14 +21,15 @@ import { without } from 'lodash';
import * as React from 'react';
import Avatar from '../../../../components/ui/Avatar';
import { translate } from '../../../../helpers/l10n';
+import { PermissionDefinitions, PermissionUser } from '../../../../types/types';
import { isPermissionDefinitionGroup } from '../../utils';
import PermissionCell from './PermissionCell';
interface Props {
- onToggle: (user: T.PermissionUser, permission: string) => Promise<void>;
- permissions: T.PermissionDefinitions;
+ onToggle: (user: PermissionUser, permission: string) => Promise<void>;
+ permissions: PermissionDefinitions;
selectedPermission?: string;
- user: T.PermissionUser;
+ user: PermissionUser;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/permissions/utils.ts b/server/sonar-web/src/main/js/apps/permissions/utils.ts
index 1fd5ab17dd4..ba61c427d98 100644
--- a/server/sonar-web/src/main/js/apps/permissions/utils.ts
+++ b/server/sonar-web/src/main/js/apps/permissions/utils.ts
@@ -19,6 +19,7 @@
*/
import { hasMessage, translate } from '../../helpers/l10n';
import { isSonarCloud } from '../../helpers/system';
+import { Dict, PermissionDefinition, PermissionDefinitionGroup } from '../../types/types';
export const PERMISSIONS_ORDER_FOR_PROJECT_TEMPLATE = [
'user',
@@ -40,7 +41,7 @@ export const PERMISSIONS_ORDER_FOR_VIEW = ['user', 'admin'];
export const PERMISSIONS_ORDER_FOR_DEV = ['user', 'admin'];
-export const PERMISSIONS_ORDER_BY_QUALIFIER: T.Dict<string[]> = {
+export const PERMISSIONS_ORDER_BY_QUALIFIER: Dict<string[]> = {
TRK: PERMISSIONS_ORDER_FOR_PROJECT_TEMPLATE,
VW: PERMISSIONS_ORDER_FOR_VIEW,
SVW: PERMISSIONS_ORDER_FOR_VIEW,
@@ -91,7 +92,7 @@ export function filterPermissions(
export function convertToPermissionDefinitions(
permissions: Array<string | { category: string; permissions: string[] }>,
l10nPrefix: string
-): Array<T.PermissionDefinition | T.PermissionDefinitionGroup> {
+): Array<PermissionDefinition | PermissionDefinitionGroup> {
return permissions.map(permission => {
if (typeof permission === 'object') {
return {
@@ -106,7 +107,7 @@ export function convertToPermissionDefinitions(
}
export function isPermissionDefinitionGroup(
- permission?: T.PermissionDefinition | T.PermissionDefinitionGroup
-): permission is T.PermissionDefinitionGroup {
- return Boolean(permission && (permission as T.PermissionDefinitionGroup).category);
+ permission?: PermissionDefinition | PermissionDefinitionGroup
+): permission is PermissionDefinitionGroup {
+ return Boolean(permission && (permission as PermissionDefinitionGroup).category);
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/actions.ts b/server/sonar-web/src/main/js/apps/projectActivity/actions.ts
index d2d95457753..eba87d060f0 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/actions.ts
+++ b/server/sonar-web/src/main/js/apps/projectActivity/actions.ts
@@ -17,9 +17,10 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+import { AnalysisEvent } from '../../types/types';
import { State } from './components/ProjectActivityAppContainer';
-export function addCustomEvent(analysis: string, event: T.AnalysisEvent) {
+export function addCustomEvent(analysis: string, event: AnalysisEvent) {
return (state: State) => ({
analyses: state.analyses.map(item => {
if (item.key !== analysis) {
@@ -41,7 +42,7 @@ export function deleteEvent(analysis: string, event: string) {
});
}
-export function changeEvent(analysis: string, event: T.AnalysisEvent) {
+export function changeEvent(analysis: string, event: AnalysisEvent) {
return (state: State) => ({
analyses: state.analyses.map(item => {
if (item.key !== analysis) {
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/DefinitionChangeEventInner.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/DefinitionChangeEventInner.tsx
index 32b6759c9cb..71384fdb2d9 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/DefinitionChangeEventInner.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/DefinitionChangeEventInner.tsx
@@ -28,11 +28,12 @@ import { translate } from '../../../helpers/l10n';
import { limitComponentName } from '../../../helpers/path';
import { getProjectUrl } from '../../../helpers/urls';
import { BranchLike } from '../../../types/branch-like';
+import { AnalysisEvent } from '../../../types/types';
-export type DefinitionChangeEvent = T.AnalysisEvent &
- Required<Pick<T.AnalysisEvent, 'definitionChange'>>;
+export type DefinitionChangeEvent = AnalysisEvent &
+ Required<Pick<AnalysisEvent, 'definitionChange'>>;
-export function isDefinitionChangeEvent(event: T.AnalysisEvent): event is DefinitionChangeEvent {
+export function isDefinitionChangeEvent(event: AnalysisEvent): event is DefinitionChangeEvent {
return event.category === 'DEFINITION_CHANGE' && event.definitionChange !== undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/Event.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/Event.tsx
index a90c8bd379c..658e9d9cf45 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/Event.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/Event.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import { DeleteButton, EditButton } from '../../../components/controls/buttons';
import { translate } from '../../../helpers/l10n';
+import { AnalysisEvent } from '../../../types/types';
import EventInner from './EventInner';
import ChangeEventForm from './forms/ChangeEventForm';
import RemoveEventForm from './forms/RemoveEventForm';
@@ -27,7 +28,7 @@ import RemoveEventForm from './forms/RemoveEventForm';
export interface EventProps {
analysisKey: string;
canAdmin?: boolean;
- event: T.AnalysisEvent;
+ event: AnalysisEvent;
isFirst?: boolean;
onChange?: (event: string, name: string) => Promise<void>;
onDelete?: (analysisKey: string, event: string) => Promise<void>;
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/EventInner.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/EventInner.tsx
index 1180aa9d6c3..6502ec138b0 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/EventInner.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/EventInner.tsx
@@ -21,11 +21,12 @@ import * as React from 'react';
import { ComponentContext } from '../../../app/components/ComponentContext';
import Tooltip from '../../../components/controls/Tooltip';
import { translate } from '../../../helpers/l10n';
+import { AnalysisEvent } from '../../../types/types';
import { DefinitionChangeEventInner, isDefinitionChangeEvent } from './DefinitionChangeEventInner';
import { isRichQualityGateEvent, RichQualityGateEventInner } from './RichQualityGateEventInner';
export interface EventInnerProps {
- event: T.AnalysisEvent;
+ event: AnalysisEvent;
readonly?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/Events.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/Events.tsx
index 5839141e24b..37968a03603 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/Events.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/Events.tsx
@@ -19,12 +19,13 @@
*/
import { sortBy } from 'lodash';
import * as React from 'react';
+import { AnalysisEvent } from '../../../types/types';
import Event from './Event';
export interface EventsProps {
analysisKey: string;
canAdmin?: boolean;
- events: T.AnalysisEvent[];
+ events: AnalysisEvent[];
isFirst?: boolean;
onChange?: (event: string, name: string) => Promise<void>;
onDelete?: (analysis: string, event: string) => Promise<void>;
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysesList.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysesList.tsx
index 7354797aef6..e82919c15d0 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysesList.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysesList.tsx
@@ -26,13 +26,14 @@ import DateFormatter from '../../../components/intl/DateFormatter';
import { toShortNotSoISOString } from '../../../helpers/dates';
import { translate } from '../../../helpers/l10n';
import { ComponentQualifier } from '../../../types/component';
+import { ParsedAnalysis } from '../../../types/types';
import { activityQueryChanged, getAnalysesByVersionByDay, Query } from '../utils';
import ProjectActivityAnalysis from './ProjectActivityAnalysis';
interface Props {
addCustomEvent: (analysis: string, name: string, category?: string) => Promise<void>;
addVersion: (analysis: string, version: string) => Promise<void>;
- analyses: T.ParsedAnalysis[];
+ analyses: ParsedAnalysis[];
analysesLoading: boolean;
canAdmin?: boolean;
canDeleteAnalyses?: boolean;
@@ -127,11 +128,11 @@ export default class ProjectActivityAnalysesList extends React.PureComponent<Pro
this.props.updateQuery({ selectedDate: date });
};
- shouldRenderBaselineMarker(analysis: T.ParsedAnalysis): boolean {
+ shouldRenderBaselineMarker(analysis: ParsedAnalysis): boolean {
return Boolean(this.props.leakPeriodDate && isEqual(this.props.leakPeriodDate, analysis.date));
}
- renderAnalysis(analysis: T.ParsedAnalysis) {
+ renderAnalysis(analysis: ParsedAnalysis) {
const firstAnalysisKey = this.props.analyses[0].key;
const selectedDate = this.props.query.selectedDate
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysis.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysis.tsx
index 9c8b6df8e11..5d6a5f36c9d 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysis.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysis.tsx
@@ -30,6 +30,7 @@ import { PopupPlacement } from '../../../components/ui/popups';
import { parseDate } from '../../../helpers/dates';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { scrollToElement } from '../../../helpers/scrolling';
+import { ParsedAnalysis } from '../../../types/types';
import Events from './Events';
import AddEventForm from './forms/AddEventForm';
import RemoveAnalysisForm from './forms/RemoveAnalysisForm';
@@ -37,7 +38,7 @@ import RemoveAnalysisForm from './forms/RemoveAnalysisForm';
export interface ProjectActivityAnalysisProps {
addCustomEvent: (analysis: string, name: string, category?: string) => Promise<void>;
addVersion: (analysis: string, version: string) => Promise<void>;
- analysis: T.ParsedAnalysis;
+ analysis: ParsedAnalysis;
canAdmin?: boolean;
canDeleteAnalyses?: boolean;
canCreateVersion: boolean;
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityApp.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityApp.tsx
index b119bcbd6c6..5d7695f87bb 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityApp.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityApp.tsx
@@ -24,6 +24,7 @@ import Suggestions from '../../../app/components/embed-docs-modal/Suggestions';
import { parseDate } from '../../../helpers/dates';
import { translate } from '../../../helpers/l10n';
import { MeasureHistory } from '../../../types/project-activity';
+import { Component, Metric, ParsedAnalysis } from '../../../types/types';
import { Query } from '../utils';
import './projectActivity.css';
import ProjectActivityAnalysesList from './ProjectActivityAnalysesList';
@@ -33,15 +34,15 @@ import ProjectActivityPageHeader from './ProjectActivityPageHeader';
interface Props {
addCustomEvent: (analysis: string, name: string, category?: string) => Promise<void>;
addVersion: (analysis: string, version: string) => Promise<void>;
- analyses: T.ParsedAnalysis[];
+ analyses: ParsedAnalysis[];
analysesLoading: boolean;
changeEvent: (event: string, name: string) => Promise<void>;
deleteAnalysis: (analysis: string) => Promise<void>;
deleteEvent: (analysis: string, event: string) => Promise<void>;
graphLoading: boolean;
initializing: boolean;
- project: Pick<T.Component, 'configuration' | 'key' | 'leakPeriodDate' | 'qualifier'>;
- metrics: T.Metric[];
+ project: Pick<Component, 'configuration' | 'key' | 'leakPeriodDate' | 'qualifier'>;
+ metrics: Metric[];
measuresHistory: MeasureHistory[];
query: Query;
updateQuery: (changes: Partial<Query>) => void;
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAppContainer.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAppContainer.tsx
index ce321125b04..7f033af879c 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAppContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAppContainer.tsx
@@ -34,6 +34,7 @@ import { parseDate } from '../../../helpers/dates';
import { BranchLike } from '../../../types/branch-like';
import { MetricKey } from '../../../types/metrics';
import { GraphType, MeasureHistory } from '../../../types/project-activity';
+import { Component, Metric, Paging, ParsedAnalysis, RawQuery } from '../../../types/types';
import * as actions from '../actions';
import {
customMetricsChanged,
@@ -46,17 +47,17 @@ import ProjectActivityApp from './ProjectActivityApp';
interface Props {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
location: Location;
router: Pick<InjectedRouter, 'push' | 'replace'>;
}
export interface State {
- analyses: T.ParsedAnalysis[];
+ analyses: ParsedAnalysis[];
analysesLoading: boolean;
graphLoading: boolean;
initialized: boolean;
- metrics: T.Metric[];
+ metrics: Metric[];
measuresHistory: MeasureHistory[];
query: Query;
}
@@ -160,7 +161,7 @@ export default class ProjectActivityAppContainer extends React.PureComponent<Pro
});
};
- fetchActivity = (project: string, p: number, ps: number, additional?: T.RawQuery) => {
+ fetchActivity = (project: string, p: number, ps: number, additional?: RawQuery) => {
const parameters = { project, p, ps, ...getBranchLikeQuery(this.props.branchLike) };
return api
.getProjectActivity({ ...additional, ...parameters })
@@ -168,7 +169,7 @@ export default class ProjectActivityAppContainer extends React.PureComponent<Pro
analyses: analyses.map(analysis => ({
...analysis,
date: parseDate(analysis.date)
- })) as T.ParsedAnalysis[],
+ })) as ParsedAnalysis[],
paging
}));
};
@@ -213,8 +214,8 @@ export default class ProjectActivityAppContainer extends React.PureComponent<Pro
loadAllActivities = (
project: string,
- prevResult?: { analyses: T.ParsedAnalysis[]; paging: T.Paging }
- ): Promise<{ analyses: T.ParsedAnalysis[]; paging: T.Paging }> => {
+ prevResult?: { analyses: ParsedAnalysis[]; paging: Paging }
+ ): Promise<{ analyses: ParsedAnalysis[]; paging: Paging }> => {
if (
prevResult &&
prevResult.paging.pageIndex * prevResult.paging.pageSize >= prevResult.paging.total
@@ -233,7 +234,7 @@ export default class ProjectActivityAppContainer extends React.PureComponent<Pro
});
};
- getTopLevelComponent = (component: T.Component) => {
+ getTopLevelComponent = (component: Component) => {
let current = component.breadcrumbs.length - 1;
while (
current > 0 &&
@@ -244,13 +245,13 @@ export default class ProjectActivityAppContainer extends React.PureComponent<Pro
return component.breadcrumbs[current].key;
};
- filterMetrics({ qualifier }: T.Component, metrics: T.Metric[]) {
+ filterMetrics({ qualifier }: Component, metrics: Metric[]) {
return ['VW', 'SVW'].includes(qualifier)
? metrics.filter(metric => metric.key !== MetricKey.security_hotspots_reviewed)
: metrics.filter(metric => metric.key !== MetricKey.security_review_rating);
}
- firstLoadData(query: Query, component: T.Component) {
+ firstLoadData(query: Query, component: Component) {
const graphMetrics = getHistoryMetrics(query.graph || DEFAULT_GRAPH, query.customMetrics);
const topLevelComponent = this.getTopLevelComponent(component);
Promise.all([
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityGraphs.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityGraphs.tsx
index aec1139cf01..7aeb04fe0a9 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityGraphs.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityGraphs.tsx
@@ -32,15 +32,16 @@ import {
splitSeriesInGraphs
} from '../../../components/activity-graph/utils';
import { GraphType, MeasureHistory, Point, Serie } from '../../../types/project-activity';
+import { Metric, ParsedAnalysis } from '../../../types/types';
import { datesQueryChanged, historyQueryChanged, Query } from '../utils';
import { PROJECT_ACTIVITY_GRAPH } from './ProjectActivityAppContainer';
interface Props {
- analyses: T.ParsedAnalysis[];
+ analyses: ParsedAnalysis[];
leakPeriodDate?: Date;
loading: boolean;
measuresHistory: MeasureHistory[];
- metrics: T.Metric[];
+ metrics: Metric[];
project: string;
query: Query;
updateQuery: (changes: Partial<Query>) => void;
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageFooter.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageFooter.tsx
index 0bccf88b719..85bbdc6e657 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageFooter.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageFooter.tsx
@@ -19,11 +19,12 @@
*/
import * as React from 'react';
import ListFooter from '../../../components/controls/ListFooter';
+import { Paging } from '../../../types/types';
interface Props {
analyses: unknown[];
fetchMoreActivity: () => void;
- paging?: T.Paging;
+ paging?: Paging;
}
export default function ProjectActivityPageFooter({ analyses, fetchMoreActivity, paging }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageHeader.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageHeader.tsx
index fe17c39eb29..1cc93b7e0f7 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityPageHeader.tsx
@@ -21,6 +21,7 @@ import classNames from 'classnames';
import * as React from 'react';
import SelectLegacy from '../../../components/controls/SelectLegacy';
import { translate } from '../../../helpers/l10n';
+import { Component } from '../../../types/types';
import { APPLICATION_EVENT_TYPES, EVENT_TYPES, Query } from '../utils';
import ProjectActivityDateInput from './ProjectActivityDateInput';
import ProjectActivityEventSelectOption from './ProjectActivityEventSelectOption';
@@ -28,7 +29,7 @@ import ProjectActivityEventSelectOption from './ProjectActivityEventSelectOption
interface Props {
category?: string;
from?: Date;
- project: Pick<T.Component, 'qualifier'>;
+ project: Pick<Component, 'qualifier'>;
to?: Date;
updateQuery: (changes: Partial<Query>) => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/RichQualityGateEventInner.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/RichQualityGateEventInner.tsx
index 253dfc700f1..1991885adce 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/RichQualityGateEventInner.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/RichQualityGateEventInner.tsx
@@ -25,10 +25,11 @@ import DropdownIcon from '../../../components/icons/DropdownIcon';
import Level from '../../../components/ui/Level';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getProjectUrl } from '../../../helpers/urls';
+import { AnalysisEvent } from '../../../types/types';
-export type RichQualityGateEvent = T.AnalysisEvent & Required<Pick<T.AnalysisEvent, 'qualityGate'>>;
+export type RichQualityGateEvent = AnalysisEvent & Required<Pick<AnalysisEvent, 'qualityGate'>>;
-export function isRichQualityGateEvent(event: T.AnalysisEvent): event is RichQualityGateEvent {
+export function isRichQualityGateEvent(event: AnalysisEvent): event is RichQualityGateEvent {
return event.category === 'QUALITY_GATE' && event.qualityGate !== undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/AddEventForm.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/AddEventForm.tsx
index 715b9c53e48..0d33785909e 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/AddEventForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/AddEventForm.tsx
@@ -20,11 +20,12 @@
import * as React from 'react';
import ConfirmModal from '../../../../components/controls/ConfirmModal';
import { translate } from '../../../../helpers/l10n';
+import { ParsedAnalysis } from '../../../../types/types';
interface Props {
addEvent: (analysis: string, name: string, category?: string) => Promise<void>;
addEventButtonText: string;
- analysis: T.ParsedAnalysis;
+ analysis: ParsedAnalysis;
onClose: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/ChangeEventForm.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/ChangeEventForm.tsx
index e21cb74372d..adfcca6e019 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/ChangeEventForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/ChangeEventForm.tsx
@@ -20,10 +20,11 @@
import * as React from 'react';
import ConfirmModal from '../../../../components/controls/ConfirmModal';
import { translate } from '../../../../helpers/l10n';
+import { AnalysisEvent } from '../../../../types/types';
interface Props {
changeEvent: (event: string, name: string) => Promise<void>;
- event: T.AnalysisEvent;
+ event: AnalysisEvent;
header: string;
onClose: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveAnalysisForm.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveAnalysisForm.tsx
index ddb2a25ba8b..4cbfa8ec157 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveAnalysisForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveAnalysisForm.tsx
@@ -20,9 +20,10 @@
import * as React from 'react';
import ConfirmModal from '../../../../components/controls/ConfirmModal';
import { translate } from '../../../../helpers/l10n';
+import { ParsedAnalysis } from '../../../../types/types';
interface Props {
- analysis: T.ParsedAnalysis;
+ analysis: ParsedAnalysis;
deleteAnalysis: (analysis: string) => Promise<void>;
onClose: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveEventForm.tsx b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveEventForm.tsx
index 3934f697e27..69ede5e897d 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveEventForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveEventForm.tsx
@@ -20,10 +20,11 @@
import * as React from 'react';
import ConfirmModal from '../../../../components/controls/ConfirmModal';
import { translate } from '../../../../helpers/l10n';
+import { AnalysisEvent } from '../../../../types/types';
export interface RemoveEventFormProps {
analysisKey: string;
- event: T.AnalysisEvent;
+ event: AnalysisEvent;
header: string;
removeEventQuestion: string;
onClose: () => void;
diff --git a/server/sonar-web/src/main/js/apps/projectActivity/utils.ts b/server/sonar-web/src/main/js/apps/projectActivity/utils.ts
index 86dae218145..e8fceb3327e 100644
--- a/server/sonar-web/src/main/js/apps/projectActivity/utils.ts
+++ b/server/sonar-web/src/main/js/apps/projectActivity/utils.ts
@@ -31,6 +31,7 @@ import {
serializeStringArray
} from '../../helpers/query';
import { GraphType } from '../../types/project-activity';
+import { Dict, ParsedAnalysis, RawQuery } from '../../types/types';
export interface Query {
category: string;
@@ -66,13 +67,13 @@ export function selectedDateQueryChanged(prevQuery: Query, nextQuery: Query) {
}
interface AnalysesByDay {
- byDay: T.Dict<T.ParsedAnalysis[]>;
+ byDay: Dict<ParsedAnalysis[]>;
version: string | null;
key: string | null;
}
export function getAnalysesByVersionByDay(
- analyses: T.ParsedAnalysis[],
+ analyses: ParsedAnalysis[],
query: Pick<Query, 'category' | 'from' | 'to'>
) {
return analyses.reduce<AnalysesByDay[]>((acc, analysis) => {
@@ -115,7 +116,7 @@ export function getAnalysesByVersionByDay(
}, []);
}
-export function parseQuery(urlQuery: T.RawQuery): Query {
+export function parseQuery(urlQuery: RawQuery): Query {
return {
category: parseAsString(urlQuery['category']),
customMetrics: parseAsArray(urlQuery['custom_metrics'], parseAsString),
@@ -127,7 +128,7 @@ export function parseQuery(urlQuery: T.RawQuery): Query {
};
}
-export function serializeQuery(query: Query): T.RawQuery {
+export function serializeQuery(query: Query): RawQuery {
return cleanQuery({
category: serializeString(query.category),
from: serializeDate(query.from),
@@ -136,7 +137,7 @@ export function serializeQuery(query: Query): T.RawQuery {
});
}
-export function serializeUrlQuery(query: Query): T.RawQuery {
+export function serializeUrlQuery(query: Query): RawQuery {
return cleanQuery({
category: serializeString(query.category),
custom_metrics: serializeStringArray(query.customMetrics),
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/App.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/App.tsx
index 3a751aecc1f..4f957e4b686 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/App.tsx
@@ -27,6 +27,12 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { isBranch, sortBranches } from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { Branch, BranchLike } from '../../../types/branch-like';
+import {
+ Component,
+ NewCodePeriod,
+ NewCodePeriodSettingType,
+ ParsedAnalysis
+} from '../../../types/types';
import '../styles.css';
import { getSettingValue } from '../utils';
import AppHeader from './AppHeader';
@@ -38,27 +44,27 @@ interface Props {
branchLikes: BranchLike[];
branchesEnabled?: boolean;
canAdmin?: boolean;
- component: T.Component;
+ component: Component;
}
interface State {
analysis?: string;
branchList: Branch[];
- currentSetting?: T.NewCodePeriodSettingType;
+ currentSetting?: NewCodePeriodSettingType;
currentSettingValue?: string;
days: string;
- generalSetting?: T.NewCodePeriod;
+ generalSetting?: NewCodePeriod;
loading: boolean;
overrideGeneralSetting?: boolean;
referenceBranch?: string;
saving: boolean;
- selected?: T.NewCodePeriodSettingType;
+ selected?: NewCodePeriodSettingType;
success?: boolean;
}
const DEFAULT_NUMBER_OF_DAYS = '30';
-const DEFAULT_GENERAL_SETTING: { type: T.NewCodePeriodSettingType } = {
+const DEFAULT_GENERAL_SETTING: { type: NewCodePeriodSettingType } = {
type: 'PREVIOUS_VERSION'
};
@@ -91,9 +97,9 @@ export default class App extends React.PureComponent<Props, State> {
}
getUpdatedState(params: {
- currentSetting?: T.NewCodePeriodSettingType;
+ currentSetting?: NewCodePeriodSettingType;
currentSettingValue?: string;
- generalSetting: T.NewCodePeriod;
+ generalSetting: NewCodePeriod;
}) {
const { currentSetting, currentSettingValue, generalSetting } = params;
const { referenceBranch } = this.state;
@@ -173,7 +179,7 @@ export default class App extends React.PureComponent<Props, State> {
);
};
- handleSelectAnalysis = (analysis: T.ParsedAnalysis) => this.setState({ analysis: analysis.key });
+ handleSelectAnalysis = (analysis: ParsedAnalysis) => this.setState({ analysis: analysis.key });
handleSelectDays = (days: string) => this.setState({ days });
@@ -187,7 +193,7 @@ export default class App extends React.PureComponent<Props, State> {
this.getUpdatedState({ generalSetting, currentSetting, currentSettingValue })
);
- handleSelectSetting = (selected?: T.NewCodePeriodSettingType) => this.setState({ selected });
+ handleSelectSetting = (selected?: NewCodePeriodSettingType) => this.setState({ selected });
handleToggleSpecificSetting = (overrideGeneralSetting: boolean) =>
this.setState({ overrideGeneralSetting });
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingAnalysis.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingAnalysis.tsx
index 0dd4a639f45..cba5518a9f4 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingAnalysis.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingAnalysis.tsx
@@ -20,10 +20,11 @@
import * as React from 'react';
import RadioCard from '../../../components/controls/RadioCard';
import { translate } from '../../../helpers/l10n';
+import { NewCodePeriodSettingType } from '../../../types/types';
export interface Props {
disabled?: boolean;
- onSelect: (selection: T.NewCodePeriodSettingType) => void;
+ onSelect: (selection: NewCodePeriodSettingType) => void;
selected: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingDays.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingDays.tsx
index a0f88c0fc16..d555d6338e8 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingDays.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingDays.tsx
@@ -22,6 +22,7 @@ import RadioCard from '../../../components/controls/RadioCard';
import ValidationInput from '../../../components/controls/ValidationInput';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
+import { NewCodePeriodSettingType } from '../../../types/types';
export interface Props {
className?: string;
@@ -30,7 +31,7 @@ export interface Props {
isChanged: boolean;
isValid: boolean;
onChangeDays: (value: string) => void;
- onSelect: (selection: T.NewCodePeriodSettingType) => void;
+ onSelect: (selection: NewCodePeriodSettingType) => void;
selected: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingPreviousVersion.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingPreviousVersion.tsx
index 9a24385d5ee..2b1ee54ad8d 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingPreviousVersion.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingPreviousVersion.tsx
@@ -20,11 +20,12 @@
import * as React from 'react';
import RadioCard from '../../../components/controls/RadioCard';
import { translate } from '../../../helpers/l10n';
+import { NewCodePeriodSettingType } from '../../../types/types';
export interface Props {
disabled?: boolean;
isDefault?: boolean;
- onSelect: (selection: T.NewCodePeriodSettingType) => void;
+ onSelect: (selection: NewCodePeriodSettingType) => void;
selected: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx
index 9e932cd4996..e31c3caf12d 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx
@@ -25,6 +25,7 @@ import AlertErrorIcon from '../../../components/icons/AlertErrorIcon';
import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { NewCodePeriodSettingType } from '../../../types/types';
export interface BaselineSettingReferenceBranchProps {
branchList: BranchOption[];
@@ -32,7 +33,7 @@ export interface BaselineSettingReferenceBranchProps {
configuredBranchName?: string;
disabled?: boolean;
onChangeReferenceBranch: (value: string) => void;
- onSelect: (selection: T.NewCodePeriodSettingType) => void;
+ onSelect: (selection: NewCodePeriodSettingType) => void;
referenceBranch: string;
selected: boolean;
settingLevel: 'project' | 'branch';
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx
index dcf12cd846b..8ae05b89402 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisList.tsx
@@ -23,17 +23,18 @@ import * as React from 'react';
import { getProjectActivity } from '../../../api/projectActivity';
import { parseDate, toShortNotSoISOString } from '../../../helpers/dates';
import { scrollToElement } from '../../../helpers/scrolling';
+import { Analysis, Dict, ParsedAnalysis } from '../../../types/types';
import BranchAnalysisListRenderer from './BranchAnalysisListRenderer';
interface Props {
analysis: string;
branch: string;
component: string;
- onSelectAnalysis: (analysis: T.ParsedAnalysis) => void;
+ onSelectAnalysis: (analysis: ParsedAnalysis) => void;
}
interface State {
- analyses: T.ParsedAnalysis[];
+ analyses: ParsedAnalysis[];
loading: boolean;
range: number;
scroll: number;
@@ -43,7 +44,7 @@ const STICKY_BADGE_SCROLL_OFFSET = 10;
export default class BranchAnalysisList extends React.PureComponent<Props, State> {
mounted = false;
- badges: T.Dict<HTMLDivElement> = {};
+ badges: Dict<HTMLDivElement> = {};
scrollableNode?: HTMLDivElement;
state: State = {
analyses: [],
@@ -82,7 +83,7 @@ export default class BranchAnalysisList extends React.PureComponent<Props, State
branch,
project: component,
from: range ? toShortNotSoISOString(subDays(new Date(), range)) : undefined
- }).then((result: { analyses: T.Analysis[] }) => {
+ }).then((result: { analyses: Analysis[] }) => {
// If the selected analysis wasn't found in the default 30 days range, redo the search
if (initial && analysis && !result.analyses.find(a => a.key === analysis)) {
this.handleRangeChange({ value: 0 });
@@ -94,7 +95,7 @@ export default class BranchAnalysisList extends React.PureComponent<Props, State
analyses: result.analyses.map(analysis => ({
...analysis,
date: parseDate(analysis.date)
- })) as T.ParsedAnalysis[],
+ })) as ParsedAnalysis[],
loading: false
},
() => {
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisListRenderer.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisListRenderer.tsx
index 7ebb4cf9fc8..c81b95fa6be 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisListRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchAnalysisListRenderer.tsx
@@ -27,15 +27,16 @@ import TimeFormatter from '../../../components/intl/TimeFormatter';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { parseDate, toShortNotSoISOString } from '../../../helpers/dates';
import { translate } from '../../../helpers/l10n';
+import { ParsedAnalysis } from '../../../types/types';
import Events from '../../projectActivity/components/Events';
import { getAnalysesByVersionByDay } from '../../projectActivity/utils';
export interface BranchAnalysisListRendererProps {
- analyses: T.ParsedAnalysis[];
+ analyses: ParsedAnalysis[];
handleRangeChange: ({ value }: { value: number }) => void;
handleScroll: (e: React.SyntheticEvent<HTMLDivElement>) => void;
loading: boolean;
- onSelectAnalysis: (analysis: T.ParsedAnalysis) => void;
+ onSelectAnalysis: (analysis: ParsedAnalysis) => void;
range: number;
registerBadgeNode: (version: string) => (el: HTMLDivElement) => void;
registerScrollableNode: (el: HTMLDivElement) => void;
@@ -44,9 +45,9 @@ export interface BranchAnalysisListRendererProps {
}
function renderAnalysis(args: {
- analysis: T.ParsedAnalysis;
+ analysis: ParsedAnalysis;
isFirst: boolean;
- onSelectAnalysis: (analysis: T.ParsedAnalysis) => void;
+ onSelectAnalysis: (analysis: ParsedAnalysis) => void;
selectedAnalysisKey: string;
}) {
const { analysis, isFirst, onSelectAnalysis, selectedAnalysisKey } = args;
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchBaselineSettingModal.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchBaselineSettingModal.tsx
index 2fb28321fe1..37629eeb5c3 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchBaselineSettingModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchBaselineSettingModal.tsx
@@ -25,6 +25,7 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { toNotSoISOString } from '../../../helpers/dates';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { Branch, BranchWithNewCodePeriod } from '../../../types/branch-like';
+import { NewCodePeriod, NewCodePeriodSettingType, ParsedAnalysis } from '../../../types/types';
import { getSettingValue, validateSetting } from '../utils';
import BaselineSettingAnalysis from './BaselineSettingAnalysis';
import BaselineSettingDays from './BaselineSettingDays';
@@ -36,7 +37,7 @@ interface Props {
branch: BranchWithNewCodePeriod;
branchList: Branch[];
component: string;
- onClose: (branch?: string, newSetting?: T.NewCodePeriod) => void;
+ onClose: (branch?: string, newSetting?: NewCodePeriod) => void;
}
interface State {
@@ -45,7 +46,7 @@ interface State {
days: string;
referenceBranch: string;
saving: boolean;
- selected?: T.NewCodePeriodSettingType;
+ selected?: NewCodePeriodSettingType;
}
export default class BranchBaselineSettingModal extends React.PureComponent<Props, State> {
@@ -74,7 +75,7 @@ export default class BranchBaselineSettingModal extends React.PureComponent<Prop
this.mounted = false;
}
- getValueFromProps(type: T.NewCodePeriodSettingType) {
+ getValueFromProps(type: NewCodePeriodSettingType) {
return this.props.branch.newCodePeriod && this.props.branch.newCodePeriod.type === type
? this.props.branch.newCodePeriod.value
: null;
@@ -123,14 +124,14 @@ export default class BranchBaselineSettingModal extends React.PureComponent<Prop
requestClose = () => this.props.onClose();
- handleSelectAnalysis = (analysis: T.ParsedAnalysis) =>
+ handleSelectAnalysis = (analysis: ParsedAnalysis) =>
this.setState({ analysis: analysis.key, analysisDate: analysis.date });
handleSelectDays = (days: string) => this.setState({ days });
handleSelectReferenceBranch = (referenceBranch: string) => this.setState({ referenceBranch });
- handleSelectSetting = (selected: T.NewCodePeriodSettingType) => this.setState({ selected });
+ handleSelectSetting = (selected: NewCodePeriodSettingType) => this.setState({ selected });
render() {
const { branch, branchList } = this.props;
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchList.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchList.tsx
index f91052b6517..201152ddd38 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchList.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchList.tsx
@@ -23,13 +23,14 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { isBranch, sortBranches } from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { Branch, BranchLike, BranchWithNewCodePeriod } from '../../../types/branch-like';
+import { Component, NewCodePeriod } from '../../../types/types';
import BranchBaselineSettingModal from './BranchBaselineSettingModal';
import BranchListRow from './BranchListRow';
interface Props {
branchList: Branch[];
- component: T.Component;
- inheritedSetting: T.NewCodePeriod;
+ component: Component;
+ inheritedSetting: NewCodePeriod;
}
interface State {
@@ -88,7 +89,7 @@ export default class BranchList extends React.PureComponent<Props, State> {
);
}
- updateBranchNewCodePeriod = (branch: string, newSetting: T.NewCodePeriod | undefined) => {
+ updateBranchNewCodePeriod = (branch: string, newSetting: NewCodePeriod | undefined) => {
const { branches } = this.state;
const updated = branches.find(b => b.name === branch);
@@ -102,7 +103,7 @@ export default class BranchList extends React.PureComponent<Props, State> {
this.setState({ editedBranch: branch });
};
- closeEditModal = (branch?: string, newSetting?: T.NewCodePeriod) => {
+ closeEditModal = (branch?: string, newSetting?: NewCodePeriod) => {
if (branch) {
this.setState({
branches: this.updateBranchNewCodePeriod(branch, newSetting),
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchListRow.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchListRow.tsx
index 0b45d2f1c48..0cb9e14f733 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchListRow.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BranchListRow.tsx
@@ -25,16 +25,17 @@ import WarningIcon from '../../../components/icons/WarningIcon';
import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { BranchWithNewCodePeriod } from '../../../types/branch-like';
+import { NewCodePeriod } from '../../../types/types';
export interface BranchListRowProps {
branch: BranchWithNewCodePeriod;
existingBranches: Array<string>;
- inheritedSetting: T.NewCodePeriod;
+ inheritedSetting: NewCodePeriod;
onOpenEditModal: (branch: BranchWithNewCodePeriod) => void;
onResetToDefault: (branchName: string) => void;
}
-function renderNewCodePeriodSetting(newCodePeriod: T.NewCodePeriod) {
+function renderNewCodePeriodSetting(newCodePeriod: NewCodePeriod) {
switch (newCodePeriod.type) {
case 'SPECIFIC_ANALYSIS':
return (
@@ -60,7 +61,7 @@ function renderNewCodePeriodSetting(newCodePeriod: T.NewCodePeriod) {
function branchInheritsItselfAsReference(
branch: BranchWithNewCodePeriod,
- inheritedSetting: T.NewCodePeriod
+ inheritedSetting: NewCodePeriod
) {
return (
!branch.newCodePeriod &&
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/ProjectBaselineSelector.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/ProjectBaselineSelector.tsx
index c001b46f4c1..fdf84f077fa 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/components/ProjectBaselineSelector.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/ProjectBaselineSelector.tsx
@@ -25,6 +25,7 @@ import { Alert } from '../../../components/ui/Alert';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { Branch } from '../../../types/branch-like';
+import { NewCodePeriod, NewCodePeriodSettingType, ParsedAnalysis } from '../../../types/types';
import { validateSetting } from '../utils';
import BaselineSettingAnalysis from './BaselineSettingAnalysis';
import BaselineSettingDays from './BaselineSettingDays';
@@ -38,24 +39,24 @@ export interface ProjectBaselineSelectorProps {
branchList: Branch[];
branchesEnabled?: boolean;
component: string;
- currentSetting?: T.NewCodePeriodSettingType;
+ currentSetting?: NewCodePeriodSettingType;
currentSettingValue?: string;
days: string;
- generalSetting: T.NewCodePeriod;
+ generalSetting: NewCodePeriod;
onCancel: () => void;
- onSelectAnalysis: (analysis: T.ParsedAnalysis) => void;
+ onSelectAnalysis: (analysis: ParsedAnalysis) => void;
onSelectDays: (value: string) => void;
onSelectReferenceBranch: (value: string) => void;
- onSelectSetting: (value?: T.NewCodePeriodSettingType) => void;
+ onSelectSetting: (value?: NewCodePeriodSettingType) => void;
onSubmit: (e: React.SyntheticEvent<HTMLFormElement>) => void;
onToggleSpecificSetting: (selection: boolean) => void;
referenceBranch?: string;
saving: boolean;
- selected?: T.NewCodePeriodSettingType;
+ selected?: NewCodePeriodSettingType;
overrideGeneralSetting: boolean;
}
-function renderGeneralSetting(generalSetting: T.NewCodePeriod) {
+function renderGeneralSetting(generalSetting: NewCodePeriod) {
let setting: string;
let description: string;
if (generalSetting.type === 'NUMBER_OF_DAYS') {
diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/utils.ts b/server/sonar-web/src/main/js/apps/projectBaseline/utils.ts
index 3828c93cf5c..358d7dae269 100644
--- a/server/sonar-web/src/main/js/apps/projectBaseline/utils.ts
+++ b/server/sonar-web/src/main/js/apps/projectBaseline/utils.ts
@@ -1,3 +1,5 @@
+import { NewCodePeriodSettingType } from '../../types/types';
+
/*
* SonarQube
* Copyright (C) 2009-2021 SonarSource SA
@@ -32,7 +34,7 @@ export function getSettingValue({
analysis?: string;
days?: string;
referenceBranch?: string;
- type?: T.NewCodePeriodSettingType;
+ type?: NewCodePeriodSettingType;
}) {
switch (type) {
case 'NUMBER_OF_DAYS':
@@ -48,12 +50,12 @@ export function getSettingValue({
export function validateSetting(state: {
analysis?: string;
- currentSetting?: T.NewCodePeriodSettingType;
+ currentSetting?: NewCodePeriodSettingType;
currentSettingValue?: string;
days: string;
overrideGeneralSetting?: boolean;
referenceBranch?: string;
- selected?: T.NewCodePeriodSettingType;
+ selected?: NewCodePeriodSettingType;
}) {
const {
analysis = '',
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
index 072a6c557ee..b714be89593 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/App.tsx
@@ -20,12 +20,13 @@
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
import BranchLikeTabs from './BranchLikeTabs';
import LifetimeInformation from './LifetimeInformation';
export interface AppProps {
branchLikes: BranchLike[];
- component: T.Component;
+ component: Component;
onBranchesChange: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeRow.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeRow.tsx
index ba2402fc380..b0d958fb32f 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeRow.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeRow.tsx
@@ -30,11 +30,12 @@ import {
} from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
import BranchPurgeSetting from './BranchPurgeSetting';
export interface BranchLikeRowProps {
branchLike: BranchLike;
- component: T.Component;
+ component: Component;
displayPurgeSetting?: boolean;
onDelete: () => void;
onRename: () => void;
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTable.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTable.tsx
index 746a7edec53..1eedf684334 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTable.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTable.tsx
@@ -22,11 +22,12 @@ import HelpTooltip from '../../../components/controls/HelpTooltip';
import { getBranchLikeKey } from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
import BranchLikeRow from './BranchLikeRow';
export interface BranchLikeTableProps {
branchLikes: BranchLike[];
- component: T.Component;
+ component: Component;
displayPurgeSetting?: boolean;
onDelete: (branchLike: BranchLike) => void;
onRename: (branchLike: BranchLike) => void;
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTabs.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTabs.tsx
index d4707949acb..ee70a0185c5 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTabs.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchLikeTabs.tsx
@@ -30,13 +30,14 @@ import {
} from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
import BranchLikeTable from './BranchLikeTable';
import DeleteBranchModal from './DeleteBranchModal';
import RenameBranchModal from './RenameBranchModal';
interface Props {
branchLikes: BranchLike[];
- component: T.Component;
+ component: Component;
onBranchesChange: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchPurgeSetting.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchPurgeSetting.tsx
index ea204c09cd5..63d510fe7b0 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/BranchPurgeSetting.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/BranchPurgeSetting.tsx
@@ -25,10 +25,11 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { isMainBranch } from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { Branch } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
interface Props {
branch: Branch;
- component: T.Component;
+ component: Component;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx
index 79180d0edce..403befd3e7f 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/DeleteBranchModal.tsx
@@ -24,10 +24,11 @@ import Modal from '../../../components/controls/Modal';
import { getBranchLikeDisplayName, isPullRequest } from '../../../helpers/branch-like';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
interface Props {
branchLike: BranchLike;
- component: T.Component;
+ component: Component;
onClose: () => void;
onDelete: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx b/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
index 5b0403f627f..31059f77e7a 100644
--- a/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectBranches/components/RenameBranchModal.tsx
@@ -25,10 +25,11 @@ import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
import { MainBranch } from '../../../types/branch-like';
+import { Component } from '../../../types/types';
interface Props {
branch: MainBranch;
- component: T.Component;
+ component: Component;
onClose: () => void;
onRename: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/projectDeletion/App.tsx b/server/sonar-web/src/main/js/apps/projectDeletion/App.tsx
index 9fd50d11b03..fecc91be0c1 100644
--- a/server/sonar-web/src/main/js/apps/projectDeletion/App.tsx
+++ b/server/sonar-web/src/main/js/apps/projectDeletion/App.tsx
@@ -20,11 +20,12 @@
import * as React from 'react';
import { Helmet } from 'react-helmet-async';
import { translate } from '../../helpers/l10n';
+import { Component } from '../../types/types';
import Form from './Form';
import Header from './Header';
interface Props {
- component: Pick<T.Component, 'key' | 'name' | 'qualifier'>;
+ component: Pick<Component, 'key' | 'name' | 'qualifier'>;
}
export default function App(props: Props) {
diff --git a/server/sonar-web/src/main/js/apps/projectDeletion/Form.tsx b/server/sonar-web/src/main/js/apps/projectDeletion/Form.tsx
index 8c97d9d87e3..2a3680c7a18 100644
--- a/server/sonar-web/src/main/js/apps/projectDeletion/Form.tsx
+++ b/server/sonar-web/src/main/js/apps/projectDeletion/Form.tsx
@@ -26,9 +26,10 @@ import ConfirmButton from '../../components/controls/ConfirmButton';
import { Router, withRouter } from '../../components/hoc/withRouter';
import { translate, translateWithParameters } from '../../helpers/l10n';
import { isApplication, isPortfolioLike } from '../../types/component';
+import { Component } from '../../types/types';
interface Props {
- component: Pick<T.Component, 'key' | 'name' | 'qualifier'>;
+ component: Pick<Component, 'key' | 'name' | 'qualifier'>;
router: Pick<Router, 'replace'>;
}
diff --git a/server/sonar-web/src/main/js/apps/projectDeletion/Header.tsx b/server/sonar-web/src/main/js/apps/projectDeletion/Header.tsx
index a20e57b22ff..3db2b1798a9 100644
--- a/server/sonar-web/src/main/js/apps/projectDeletion/Header.tsx
+++ b/server/sonar-web/src/main/js/apps/projectDeletion/Header.tsx
@@ -19,9 +19,10 @@
*/
import * as React from 'react';
import { translate } from '../../helpers/l10n';
+import { Component } from '../../types/types';
interface Props {
- component: Pick<T.Component, 'qualifier'>;
+ component: Pick<Component, 'qualifier'>;
}
export default function Header(props: Props) {
diff --git a/server/sonar-web/src/main/js/apps/projectDump/ProjectDumpApp.tsx b/server/sonar-web/src/main/js/apps/projectDump/ProjectDumpApp.tsx
index 8414da52c12..20666cb9192 100644
--- a/server/sonar-web/src/main/js/apps/projectDump/ProjectDumpApp.tsx
+++ b/server/sonar-web/src/main/js/apps/projectDump/ProjectDumpApp.tsx
@@ -25,6 +25,7 @@ import { withAppState } from '../../components/hoc/withAppState';
import { translate } from '../../helpers/l10n';
import { DumpStatus, DumpTask } from '../../types/project-dump';
import { TaskStatuses, TaskTypes } from '../../types/tasks';
+import { AppState, Component } from '../../types/types';
import Export from './components/Export';
import Import from './components/Import';
import './styles.css';
@@ -32,8 +33,8 @@ import './styles.css';
const POLL_INTERNAL = 5000;
interface Props {
- appState: Pick<T.AppState, 'projectImportFeatureEnabled'>;
- component: T.Component;
+ appState: Pick<AppState, 'projectImportFeatureEnabled'>;
+ component: Component;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/projectKey/Key.tsx b/server/sonar-web/src/main/js/apps/projectKey/Key.tsx
index df70da33abb..0b146dbd23a 100644
--- a/server/sonar-web/src/main/js/apps/projectKey/Key.tsx
+++ b/server/sonar-web/src/main/js/apps/projectKey/Key.tsx
@@ -23,10 +23,11 @@ import { withRouter, WithRouterProps } from 'react-router';
import { changeKey } from '../../api/components';
import RecentHistory from '../../app/components/RecentHistory';
import { translate } from '../../helpers/l10n';
+import { Component } from '../../types/types';
import UpdateForm from './UpdateForm';
interface Props {
- component: Pick<T.Component, 'key' | 'name'>;
+ component: Pick<Component, 'key' | 'name'>;
}
export class Key extends React.PureComponent<Props & WithRouterProps> {
diff --git a/server/sonar-web/src/main/js/apps/projectKey/UpdateForm.tsx b/server/sonar-web/src/main/js/apps/projectKey/UpdateForm.tsx
index 1cb39eb737b..2f66aa36d45 100644
--- a/server/sonar-web/src/main/js/apps/projectKey/UpdateForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectKey/UpdateForm.tsx
@@ -25,9 +25,10 @@ import MandatoryFieldsExplanation from '../../components/ui/MandatoryFieldsExpla
import { translate, translateWithParameters } from '../../helpers/l10n';
import { validateProjectKey } from '../../helpers/projects';
import { ProjectKeyValidationResult } from '../../types/component';
+import { Component } from '../../types/types';
export interface UpdateFormProps {
- component: Pick<T.Component, 'key' | 'name'>;
+ component: Pick<Component, 'key' | 'name'>;
onKeyChange: (newKey: string) => Promise<void>;
}
diff --git a/server/sonar-web/src/main/js/apps/projectLinks/App.tsx b/server/sonar-web/src/main/js/apps/projectLinks/App.tsx
index 82cc8f6c8a1..d494e1540d2 100644
--- a/server/sonar-web/src/main/js/apps/projectLinks/App.tsx
+++ b/server/sonar-web/src/main/js/apps/projectLinks/App.tsx
@@ -22,15 +22,16 @@ import { Helmet } from 'react-helmet-async';
import { createLink, deleteLink, getProjectLinks } from '../../api/projectLinks';
import DeferredSpinner from '../../components/ui/DeferredSpinner';
import { translate } from '../../helpers/l10n';
+import { Component, ProjectLink } from '../../types/types';
import Header from './Header';
import Table from './Table';
interface Props {
- component: Pick<T.Component, 'key'>;
+ component: Pick<Component, 'key'>;
}
interface State {
- links?: T.ProjectLink[];
+ links?: ProjectLink[];
loading: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projectLinks/LinkRow.tsx b/server/sonar-web/src/main/js/apps/projectLinks/LinkRow.tsx
index 955a2dffd26..4983ddbb4af 100644
--- a/server/sonar-web/src/main/js/apps/projectLinks/LinkRow.tsx
+++ b/server/sonar-web/src/main/js/apps/projectLinks/LinkRow.tsx
@@ -24,14 +24,15 @@ import ConfirmButton from '../../components/controls/ConfirmButton';
import ProjectLinkIcon from '../../components/icons/ProjectLinkIcon';
import { translate, translateWithParameters } from '../../helpers/l10n';
import { getLinkName, isProvided } from '../../helpers/projectLinks';
+import { ProjectLink } from '../../types/types';
interface Props {
- link: T.ProjectLink;
+ link: ProjectLink;
onDelete: (linkId: string) => Promise<void>;
}
export default class LinkRow extends React.PureComponent<Props> {
- renderNameForProvided = (link: T.ProjectLink) => {
+ renderNameForProvided = (link: ProjectLink) => {
return (
<div className="display-inline-block text-top">
<div>
@@ -44,7 +45,7 @@ export default class LinkRow extends React.PureComponent<Props> {
);
};
- renderName = (link: T.ProjectLink) => {
+ renderName = (link: ProjectLink) => {
return (
<div>
<ProjectLinkIcon className="little-spacer-right" type={link.type} />
@@ -59,7 +60,7 @@ export default class LinkRow extends React.PureComponent<Props> {
);
};
- renderDeleteButton = (link: T.ProjectLink) => {
+ renderDeleteButton = (link: ProjectLink) => {
if (isProvided(link)) {
return null;
}
diff --git a/server/sonar-web/src/main/js/apps/projectLinks/Table.tsx b/server/sonar-web/src/main/js/apps/projectLinks/Table.tsx
index 7d33bb5997c..0313d912599 100644
--- a/server/sonar-web/src/main/js/apps/projectLinks/Table.tsx
+++ b/server/sonar-web/src/main/js/apps/projectLinks/Table.tsx
@@ -20,10 +20,11 @@
import * as React from 'react';
import { translate } from '../../helpers/l10n';
import { orderLinks } from '../../helpers/projectLinks';
+import { ProjectLink } from '../../types/types';
import LinkRow from './LinkRow';
interface Props {
- links: T.ProjectLink[];
+ links: ProjectLink[];
onDelete: (linkId: string) => Promise<void>;
}
diff --git a/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateApp.tsx b/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateApp.tsx
index 08468d1fb8e..5deabd5bfb5 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateApp.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateApp.tsx
@@ -29,17 +29,18 @@ import {
import addGlobalSuccessMessage from '../../app/utils/addGlobalSuccessMessage';
import handleRequiredAuthorization from '../../app/utils/handleRequiredAuthorization';
import { translate } from '../../helpers/l10n';
+import { Component, QualityGate } from '../../types/types';
import { USE_SYSTEM_DEFAULT } from './constants';
import ProjectQualityGateAppRenderer from './ProjectQualityGateAppRenderer';
interface Props {
- component: T.Component;
+ component: Component;
onComponentChange: (changes: {}) => void;
}
interface State {
- allQualityGates?: T.QualityGate[];
- currentQualityGate?: T.QualityGate;
+ allQualityGates?: QualityGate[];
+ currentQualityGate?: QualityGate;
loading: boolean;
selectedQualityGateId: string;
submitting: boolean;
@@ -72,7 +73,7 @@ export default class ProjectQualityGateApp extends React.PureComponent<Props, St
return !!hasPermission;
};
- isUsingDefault = async (qualityGate: T.QualityGate) => {
+ isUsingDefault = async (qualityGate: QualityGate) => {
const { component } = this.props;
if (!qualityGate.isDefault) {
diff --git a/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateAppRenderer.tsx b/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateAppRenderer.tsx
index adc0763cbf5..012db878b07 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateAppRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityGate/ProjectQualityGateAppRenderer.tsx
@@ -31,12 +31,13 @@ import SelectLegacy from '../../components/controls/SelectLegacy';
import { Alert } from '../../components/ui/Alert';
import { translate } from '../../helpers/l10n';
import { isDiffMetric } from '../../helpers/measures';
+import { QualityGate } from '../../types/types';
import BuiltInQualityGateBadge from '../quality-gates/components/BuiltInQualityGateBadge';
import { USE_SYSTEM_DEFAULT } from './constants';
export interface ProjectQualityGateAppRendererProps {
- allQualityGates?: T.QualityGate[];
- currentQualityGate?: T.QualityGate;
+ allQualityGates?: QualityGate[];
+ currentQualityGate?: QualityGate;
loading: boolean;
onSelect: (id: string) => void;
onSubmit: () => void;
@@ -44,7 +45,7 @@ export interface ProjectQualityGateAppRendererProps {
submitting: boolean;
}
-function hasConditionOnNewCode(qualityGate: T.QualityGate): boolean {
+function hasConditionOnNewCode(qualityGate: QualityGate): boolean {
return !!qualityGate.conditions?.some(condition => isDiffMetric(condition.metric));
}
diff --git a/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesApp.tsx b/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesApp.tsx
index 81b7af22f5d..06abdead367 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesApp.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesApp.tsx
@@ -30,11 +30,12 @@ import addGlobalSuccessMessage from '../../app/utils/addGlobalSuccessMessage';
import handleRequiredAuthorization from '../../app/utils/handleRequiredAuthorization';
import { translateWithParameters } from '../../helpers/l10n';
import { isDefined } from '../../helpers/types';
+import { Component } from '../../types/types';
import ProjectQualityProfilesAppRenderer from './ProjectQualityProfilesAppRenderer';
import { ProjectProfile } from './types';
interface Props {
- component: T.Component;
+ component: Component;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesAppRenderer.tsx b/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesAppRenderer.tsx
index 024ca06fab3..2a3f057c49f 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesAppRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityProfiles/ProjectQualityProfilesAppRenderer.tsx
@@ -30,6 +30,7 @@ import EditIcon from '../../components/icons/EditIcon';
import PlusCircleIcon from '../../components/icons/PlusCircleIcon';
import { translate } from '../../helpers/l10n';
import { getRulesUrl } from '../../helpers/urls';
+import { Component } from '../../types/types';
import BuiltInQualityProfileBadge from '../quality-profiles/components/BuiltInQualityProfileBadge';
import AddLanguageModal from './components/AddLanguageModal';
import SetQualityProfileModal from './components/SetQualityProfileModal';
@@ -37,7 +38,7 @@ import { ProjectProfile } from './types';
export interface ProjectQualityProfilesAppRendererProps {
allProfiles?: Profile[];
- component: T.Component;
+ component: Component;
loading: boolean;
onAddLanguage: (key: string) => Promise<void>;
onCloseModal: () => void;
diff --git a/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/AddLanguageModal.tsx b/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/AddLanguageModal.tsx
index c01da6619fb..58433a959ca 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/AddLanguageModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/AddLanguageModal.tsx
@@ -29,12 +29,13 @@ import SimpleModal from '../../../components/controls/SimpleModal';
import { translate } from '../../../helpers/l10n';
import { getQualityProfileUrl } from '../../../helpers/urls';
import { Store } from '../../../store/rootReducer';
+import { Dict, Languages } from '../../../types/types';
export interface AddLanguageModalProps {
- languages: T.Languages;
+ languages: Languages;
onClose: () => void;
onSubmit: (key: string) => Promise<void>;
- profilesByLanguage: T.Dict<Profile[]>;
+ profilesByLanguage: Dict<Profile[]>;
unavailableLanguages: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/SetQualityProfileModal.tsx b/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/SetQualityProfileModal.tsx
index a8b021b014e..7d12696199e 100644
--- a/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/SetQualityProfileModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectQualityProfiles/components/SetQualityProfileModal.tsx
@@ -28,12 +28,13 @@ import SimpleModal from '../../../components/controls/SimpleModal';
import { Alert } from '../../../components/ui/Alert';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getQualityProfileUrl } from '../../../helpers/urls';
+import { Component } from '../../../types/types';
import BuiltInQualityProfileBadge from '../../quality-profiles/components/BuiltInQualityProfileBadge';
import { USE_SYSTEM_DEFAULT } from '../constants';
export interface SetQualityProfileModalProps {
availableProfiles: Profile[];
- component: T.Component;
+ component: Component;
currentProfile: Profile;
onClose: () => void;
onSubmit: (newKey: string | undefined, oldKey: string) => Promise<void>;
diff --git a/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx b/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
index 4034a6fd592..816f39f48a4 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
@@ -33,6 +33,7 @@ import { addSideBarClass, removeSideBarClass } from '../../../helpers/pages';
import { get, save } from '../../../helpers/storage';
import { isLoggedIn } from '../../../helpers/users';
import { ComponentQualifier } from '../../../types/component';
+import { CurrentUser, RawQuery } from '../../../types/types';
import { hasFilterParams, hasVisualizationParams, parseUrlQuery, Query } from '../query';
import '../styles.css';
import { Facets, Project } from '../types';
@@ -43,7 +44,7 @@ import PageSidebar from './PageSidebar';
import ProjectsList from './ProjectsList';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
isFavorite: boolean;
location: Pick<Location, 'pathname' | 'query'>;
qualifiers: ComponentQualifier[];
@@ -216,7 +217,7 @@ export class AllProjects extends React.PureComponent<Props, State> {
}
};
- updateLocationQuery = (newQuery: T.RawQuery) => {
+ updateLocationQuery = (newQuery: RawQuery) => {
const query = omitBy({ ...this.props.location.query, ...newQuery }, x => !x);
this.props.router.push({ pathname: this.props.location.pathname, query });
};
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ApplicationCreation.tsx b/server/sonar-web/src/main/js/apps/projects/components/ApplicationCreation.tsx
index b652a99505b..ac77f57192b 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/ApplicationCreation.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/ApplicationCreation.tsx
@@ -29,11 +29,12 @@ import { getComponentAdminUrl, getComponentOverviewUrl } from '../../../helpers/
import { hasGlobalPermission } from '../../../helpers/users';
import { ComponentQualifier } from '../../../types/component';
import { Permissions } from '../../../types/permissions';
+import { AppState, LoggedInUser } from '../../../types/types';
export interface ApplicationCreationProps {
- appState: Pick<T.AppState, 'qualifiers'>;
+ appState: Pick<AppState, 'qualifiers'>;
className?: string;
- currentUser: T.LoggedInUser;
+ currentUser: LoggedInUser;
router: Router;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/DefaultPageSelector.tsx b/server/sonar-web/src/main/js/apps/projects/components/DefaultPageSelector.tsx
index 68329e25c0a..8d6ac8a797e 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/DefaultPageSelector.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/DefaultPageSelector.tsx
@@ -23,11 +23,12 @@ import { withCurrentUser } from '../../../components/hoc/withCurrentUser';
import { Location, Router, withRouter } from '../../../components/hoc/withRouter';
import { get } from '../../../helpers/storage';
import { hasGlobalPermission, isLoggedIn } from '../../../helpers/users';
+import { CurrentUser } from '../../../types/types';
import { PROJECTS_ALL, PROJECTS_DEFAULT_FILTER, PROJECTS_FAVORITE } from '../utils';
import AllProjectsContainer from './AllProjectsContainer';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
location: Pick<Location, 'pathname' | 'query'>;
router: Pick<Router, 'replace'>;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/EmptyInstance.tsx b/server/sonar-web/src/main/js/apps/projects/components/EmptyInstance.tsx
index c1fc2b8209e..907e07834f2 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/EmptyInstance.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/EmptyInstance.tsx
@@ -24,9 +24,10 @@ import { withRouter } from '../../../components/hoc/withRouter';
import { translate } from '../../../helpers/l10n';
import { hasGlobalPermission, isLoggedIn } from '../../../helpers/users';
import { Permissions } from '../../../types/permissions';
+import { CurrentUser } from '../../../types/types';
export interface EmptyInstanceProps {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
router: WithRouterProps['router'];
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/FavoriteFilter.tsx b/server/sonar-web/src/main/js/apps/projects/components/FavoriteFilter.tsx
index 7a017538197..235c3b2cd8f 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/FavoriteFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/FavoriteFilter.tsx
@@ -22,11 +22,12 @@ import { IndexLink, Link } from 'react-router';
import { translate } from '../../../helpers/l10n';
import { save } from '../../../helpers/storage';
import { isLoggedIn } from '../../../helpers/users';
+import { CurrentUser, RawQuery } from '../../../types/types';
import { PROJECTS_ALL, PROJECTS_DEFAULT_FILTER, PROJECTS_FAVORITE } from '../utils';
interface Props {
- currentUser: T.CurrentUser;
- query?: T.RawQuery;
+ currentUser: CurrentUser;
+ query?: RawQuery;
}
export default class FavoriteFilter extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/projects/components/PageHeader.tsx b/server/sonar-web/src/main/js/apps/projects/components/PageHeader.tsx
index 8d9e1fbcbc8..1d88553877d 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/PageHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/PageHeader.tsx
@@ -23,6 +23,7 @@ import HomePageSelect from '../../../components/controls/HomePageSelect';
import Tooltip from '../../../components/controls/Tooltip';
import { translate } from '../../../helpers/l10n';
import { isLoggedIn } from '../../../helpers/users';
+import { CurrentUser, RawQuery } from '../../../types/types';
import SearchFilterContainer from '../filters/SearchFilterContainer';
import { Project } from '../types';
import ApplicationCreation from './ApplicationCreation';
@@ -31,13 +32,13 @@ import ProjectCreationMenu from './ProjectCreationMenu';
import ProjectsSortingSelect from './ProjectsSortingSelect';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
loading: boolean;
onPerspectiveChange: (x: { view: string; visualization?: string }) => void;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
onSortChange: (sort: string, desc: boolean) => void;
projects?: Project[];
- query: T.RawQuery;
+ query: RawQuery;
selectedSort: string;
total?: number;
view: string;
diff --git a/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx b/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx
index 13872969632..dc4cd58fbe4 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/PageSidebar.tsx
@@ -20,6 +20,7 @@
import { flatMap } from 'lodash';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import CoverageFilter from '../filters/CoverageFilter';
import DuplicationsFilter from '../filters/DuplicationsFilter';
import LanguagesFilterContainer from '../filters/LanguagesFilterContainer';
@@ -46,8 +47,8 @@ export interface PageSidebarProps {
applicationsEnabled: boolean;
facets?: Facets;
onClearAll: () => void;
- onQueryChange: (change: T.RawQuery) => void;
- query: T.RawQuery;
+ onQueryChange: (change: RawQuery) => void;
+ query: RawQuery;
view: string;
visualization: string;
}
@@ -59,7 +60,7 @@ export default function PageSidebar(props: PageSidebarProps) {
const maxFacetValue = getMaxFacetValue(facets);
const facetProps = { onQueryChange, maxFacetValue };
- let linkQuery: T.RawQuery | undefined = undefined;
+ let linkQuery: RawQuery | undefined = undefined;
if (view !== 'overall') {
linkQuery = { view };
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectCreationMenu.tsx b/server/sonar-web/src/main/js/apps/projects/components/ProjectCreationMenu.tsx
index d43ce028420..f75875da77e 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/ProjectCreationMenu.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectCreationMenu.tsx
@@ -30,11 +30,12 @@ import { translate } from '../../../helpers/l10n';
import { hasGlobalPermission } from '../../../helpers/users';
import { AlmKeys, AlmSettingsInstance } from '../../../types/alm-settings';
import { Permissions } from '../../../types/permissions';
+import { LoggedInUser } from '../../../types/types';
import ProjectCreationMenuItem from './ProjectCreationMenuItem';
interface Props {
className?: string;
- currentUser: T.LoggedInUser;
+ currentUser: LoggedInUser;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectsList.tsx b/server/sonar-web/src/main/js/apps/projects/components/ProjectsList.tsx
index 8e265138f43..d2f93deca14 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/ProjectsList.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectsList.tsx
@@ -23,6 +23,7 @@ import { List, ListRowProps } from 'react-virtualized/dist/commonjs/List';
import { WindowScroller } from 'react-virtualized/dist/commonjs/WindowScroller';
import EmptySearch from '../../../components/common/EmptySearch';
import { translate } from '../../../helpers/l10n';
+import { CurrentUser } from '../../../types/types';
import { Query } from '../query';
import { Project } from '../types';
import EmptyFavoriteSearch from './EmptyFavoriteSearch';
@@ -35,7 +36,7 @@ const PROJECT_CARD_MARGIN = 20;
interface Props {
cardType?: string;
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
handleFavorite: (component: string, isFavorite: boolean) => void;
isFavorite: boolean;
isFiltered: boolean;
diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx
index 6709060a2ff..eccc586ea73 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx
@@ -21,6 +21,7 @@ import { shallow } from 'enzyme';
import * as React from 'react';
import { get, save } from '../../../../helpers/storage';
import { ComponentQualifier } from '../../../../types/component';
+import { Dict } from '../../../../types/types';
import {
AllProjects,
LS_PROJECTS_SORT,
@@ -110,7 +111,7 @@ it('fetches projects', () => {
});
it('redirects to the saved search', () => {
- const localeStorageMock: T.Dict<string> = {
+ const localeStorageMock: Dict<string> = {
[LS_PROJECTS_VIEW]: 'leak',
[LS_PROJECTS_SORT]: 'coverage',
[LS_PROJECTS_VISUALIZATION]: 'security'
diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
index 01a5c463cd4..5ed9e6e8ad9 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
@@ -29,6 +29,7 @@ import {
} from '../../../../helpers/testMocks';
import { waitAndUpdate } from '../../../../helpers/testUtils';
import { hasGlobalPermission } from '../../../../helpers/users';
+import { CurrentUser } from '../../../../types/types';
import { DefaultPageSelector } from '../DefaultPageSelector';
jest.mock(
@@ -46,7 +47,7 @@ jest.mock('../../../../helpers/storage', () => ({
jest.mock('../../../../helpers/users', () => ({
hasGlobalPermission: jest.fn().mockReturnValue(false),
- isLoggedIn: jest.fn((u: T.CurrentUser) => u.isLoggedIn)
+ isLoggedIn: jest.fn((u: CurrentUser) => u.isLoggedIn)
}));
jest.mock('../../../../api/components', () => ({
diff --git a/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCard.tsx b/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCard.tsx
index 96758862825..624d6021173 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCard.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCard.tsx
@@ -35,6 +35,7 @@ import { getProjectUrl } from '../../../../helpers/urls';
import { isLoggedIn } from '../../../../helpers/users';
import { ComponentQualifier } from '../../../../types/component';
import { MetricKey } from '../../../../types/metrics';
+import { CurrentUser } from '../../../../types/types';
import { Project } from '../../types';
import './ProjectCard.css';
import ProjectCardLanguagesContainer from './ProjectCardLanguagesContainer';
@@ -43,7 +44,7 @@ import ProjectCardMeasures from './ProjectCardMeasures';
import ProjectCardQualityGate from './ProjectCardQualityGate';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
handleFavorite: (component: string, isFavorite: boolean) => void;
height: number;
project: Project;
diff --git a/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardLanguages.tsx b/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardLanguages.tsx
index 567ca229559..77309ffdbb3 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardLanguages.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardLanguages.tsx
@@ -20,11 +20,12 @@
import { sortBy } from 'lodash';
import * as React from 'react';
import { translate } from '../../../../helpers/l10n';
+import { Languages } from '../../../../types/types';
interface Props {
className?: string;
distribution?: string;
- languages: T.Languages;
+ languages: Languages;
}
export default function ProjectCardLanguages({ className, distribution, languages }: Props) {
@@ -46,7 +47,7 @@ export default function ProjectCardLanguages({ className, distribution, language
);
}
-function getLanguageName(languages: T.Languages, key: string): string {
+function getLanguageName(languages: Languages, key: string): string {
if (key === '<null>') {
return translate('unknown');
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasures.tsx b/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasures.tsx
index 1694baf44b1..6a71ccc1f93 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasures.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasures.tsx
@@ -29,12 +29,13 @@ import { translate, translateWithParameters } from '../../../../helpers/l10n';
import { isDefined } from '../../../../helpers/types';
import { ComponentQualifier } from '../../../../types/component';
import { MetricKey } from '../../../../types/metrics';
+import { Dict } from '../../../../types/types';
import { formatDuration } from '../../utils';
import ProjectCardMeasure from './ProjectCardMeasure';
export interface ProjectCardMeasuresProps {
isNewCode: boolean;
- measures: T.Dict<string | undefined>;
+ measures: Dict<string | undefined>;
componentQualifier: ComponentQualifier;
newCodeStartingDate?: string;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCard-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCard-test.tsx
index d6cf7f5744b..87cbce08c4b 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCard-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCard-test.tsx
@@ -23,6 +23,7 @@ import PrivacyBadgeContainer from '../../../../../components/common/PrivacyBadge
import TagsList from '../../../../../components/tags/TagsList';
import { mockCurrentUser, mockLoggedInUser } from '../../../../../helpers/testMocks';
import { ComponentQualifier } from '../../../../../types/component';
+import { CurrentUser } from '../../../../../types/types';
import { Project } from '../../../types';
import ProjectCard from '../ProjectCard';
import ProjectCardQualityGate from '../ProjectCardQualityGate';
@@ -108,7 +109,7 @@ it('should display applications', () => {
).toMatchSnapshot('with project count');
});
-function shallowRender(project: Project, user: T.CurrentUser = USER_LOGGED_OUT, type?: string) {
+function shallowRender(project: Project, user: CurrentUser = USER_LOGGED_OUT, type?: string) {
return shallow(
<ProjectCard
currentUser={user}
diff --git a/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCardMeasures-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCardMeasures-test.tsx
index 788f567050f..93ebaefec6f 100644
--- a/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCardMeasures-test.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/components/project-card/__tests__/ProjectCardMeasures-test.tsx
@@ -22,6 +22,7 @@ import * as React from 'react';
import CoverageRating from '../../../../../components/ui/CoverageRating';
import { ComponentQualifier } from '../../../../../types/component';
import { MetricKey } from '../../../../../types/metrics';
+import { Dict } from '../../../../../types/types';
import ProjectCardMeasures, { ProjectCardMeasuresProps } from '../ProjectCardMeasures';
jest.mock('date-fns', () => ({
@@ -59,7 +60,7 @@ describe('New code measures', () => {
});
function shallowRender(
- measuresOverride: T.Dict<string | undefined> = {},
+ measuresOverride: Dict<string | undefined> = {},
props: Partial<ProjectCardMeasuresProps> = {}
) {
const measures = {
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.tsx
index 4e1463002db..69ad7754ac9 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import CoverageRating from '../../../components/ui/CoverageRating';
import { translate } from '../../../helpers/l10n';
import { getCoverageRatingAverageValue, getCoverageRatingLabel } from '../../../helpers/ratings';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -29,7 +30,7 @@ export interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.tsx
index 8ad097a9826..05869513cd5 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.tsx
@@ -24,6 +24,7 @@ import {
getDuplicationsRatingAverageValue,
getDuplicationsRatingLabel
} from '../../../helpers/ratings';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -32,7 +33,7 @@ export interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx
index 85a15f0e7b5..710133a1af7 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/Filter.tsx
@@ -21,6 +21,7 @@ import classNames from 'classnames';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
export type Option = string | number;
@@ -28,7 +29,7 @@ export type Option = string | number;
interface Props {
property: string;
className?: string;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
options: Option[];
renderOption: (option: Option, isSelected: boolean) => React.ReactNode;
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx
index ade2ba79d85..aa0e5cda137 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import Rating from '../../../components/ui/Rating';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -30,7 +31,7 @@ interface Props {
headerDetail?: React.ReactNode;
maxFacetValue?: number;
name: string;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property: string;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.tsx
index e3786e0f5b1..9e6b5f23883 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.tsx
@@ -21,6 +21,7 @@ import { difference, sortBy } from 'lodash';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { getLanguageByKey } from '../../../store/languages';
+import { Dict, Languages, RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -29,11 +30,11 @@ import SearchableFilterOption from './SearchableFilterOption';
interface Props {
facet?: Facet;
- languages: T.Languages;
+ languages: Languages;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
- query: T.Dict<any>;
+ query: Dict<any>;
value?: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/MaintainabilityFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/MaintainabilityFilter.tsx
index 73a3c437eca..b688cd21434 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/MaintainabilityFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/MaintainabilityFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import CodeSmellIcon from '../../../components/icons/CodeSmellIcon';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import IssuesFilter from './IssuesFilter';
@@ -28,7 +29,7 @@ interface Props {
facet?: Facet;
headerDetail?: React.ReactNode;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/NewLinesFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/NewLinesFilter.tsx
index 73b9dceb8dc..a87dade56df 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/NewLinesFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/NewLinesFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
import { getSizeRatingLabel } from '../../../helpers/ratings';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -28,7 +29,7 @@ export interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/NewMaintainabilityFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/NewMaintainabilityFilter.tsx
index c151cb3c6fc..17ed7eb724f 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/NewMaintainabilityFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/NewMaintainabilityFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import CodeSmellIcon from '../../../components/icons/CodeSmellIcon';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import IssuesFilter from './IssuesFilter';
@@ -27,7 +28,7 @@ interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/NewReliabilityFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/NewReliabilityFilter.tsx
index 423e5fd205b..62994683e66 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/NewReliabilityFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/NewReliabilityFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import BugIcon from '../../../components/icons/BugIcon';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import IssuesFilter from './IssuesFilter';
@@ -27,7 +28,7 @@ interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/NewSecurityFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/NewSecurityFilter.tsx
index 64614768687..bc08d8fee98 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/NewSecurityFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/NewSecurityFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import VulnerabilityIcon from '../../../components/icons/VulnerabilityIcon';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import IssuesFilter from './IssuesFilter';
@@ -27,7 +28,7 @@ interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/QualifierFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/QualifierFilter.tsx
index 84812b36415..a78fa08c5f0 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/QualifierFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/QualifierFilter.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import QualifierIcon from '../../../components/icons/QualifierIcon';
import { translate } from '../../../helpers/l10n';
import { ComponentQualifier } from '../../../types/component';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -28,7 +29,7 @@ import FilterHeader from './FilterHeader';
export interface QualifierFilterProps {
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value: ComponentQualifier | undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.tsx
index fd857bf2f80..b078c0a9bf1 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import Level from '../../../components/ui/Level';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -29,7 +30,7 @@ export interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/ReliabilityFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/ReliabilityFilter.tsx
index 2f4f683241e..db278caa5a7 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/ReliabilityFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/ReliabilityFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import BugIcon from '../../../components/icons/BugIcon';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import IssuesFilter from './IssuesFilter';
@@ -28,7 +29,7 @@ interface Props {
facet?: Facet;
headerDetail?: React.ReactNode;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx
index 61a7e51d413..000195204cb 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/SearchableFilterFooter.tsx
@@ -20,16 +20,17 @@
import * as React from 'react';
import SelectLegacy from '../../../components/controls/SelectLegacy';
import { translate } from '../../../helpers/l10n';
+import { Dict, RawQuery } from '../../../types/types';
interface Props {
isFavorite?: boolean;
isLoading?: boolean;
onInputChange?: (query: string) => void;
onOpen?: () => void;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
options: Array<{ label: string; value: string }>;
property: string;
- query: T.Dict<any>;
+ query: Dict<any>;
}
export default class SearchableFilterFooter extends React.PureComponent<Props> {
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SecurityFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/SecurityFilter.tsx
index a553d205870..fc475918ceb 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/SecurityFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/SecurityFilter.tsx
@@ -20,6 +20,7 @@
import * as React from 'react';
import VulnerabilityIcon from '../../../components/icons/VulnerabilityIcon';
import { translate } from '../../../helpers/l10n';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import IssuesFilter from './IssuesFilter';
@@ -28,7 +29,7 @@ interface Props {
facet?: Facet;
headerDetail?: React.ReactNode;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SecurityReviewFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/SecurityReviewFilter.tsx
index 816b7428e33..c36d18f7dcb 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/SecurityReviewFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/SecurityReviewFilter.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import SecurityHotspotIcon from '../../../components/icons/SecurityHotspotIcon';
import Rating from '../../../components/ui/Rating';
import { translate } from '../../../helpers/l10n';
+import { Dict, RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -29,12 +30,12 @@ export interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
value?: any;
}
-const labels: T.Dict<string> = {
+const labels: Dict<string> = {
1: '≥ 80%',
2: '70% - 80%',
3: '50% - 70%',
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.tsx
index 9df9a168890..906d7fee9bf 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import SizeRating from '../../../components/ui/SizeRating';
import { translate } from '../../../helpers/l10n';
import { getSizeRatingAverageValue, getSizeRatingLabel } from '../../../helpers/ratings';
+import { RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -29,7 +30,7 @@ export interface Props {
className?: string;
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
value?: any;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx
index c7175a3cc3b..6bfd1e91aa8 100644
--- a/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.tsx
@@ -21,6 +21,7 @@ import { debounce, difference, size, sortBy } from 'lodash';
import * as React from 'react';
import { searchProjectTags } from '../../../api/components';
import { translate } from '../../../helpers/l10n';
+import { Dict, RawQuery } from '../../../types/types';
import { Facet } from '../types';
import Filter from './Filter';
import FilterHeader from './FilterHeader';
@@ -30,9 +31,9 @@ import SearchableFilterOption from './SearchableFilterOption';
interface Props {
facet?: Facet;
maxFacetValue?: number;
- onQueryChange: (change: T.RawQuery) => void;
+ onQueryChange: (change: RawQuery) => void;
property?: string;
- query: T.Dict<any>;
+ query: Dict<any>;
value?: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/projects/query.ts b/server/sonar-web/src/main/js/apps/projects/query.ts
index 97e0eee257f..51334cee3d2 100644
--- a/server/sonar-web/src/main/js/apps/projects/query.ts
+++ b/server/sonar-web/src/main/js/apps/projects/query.ts
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { ComponentQualifier } from '../../types/component';
+import { Dict, RawQuery } from '../../types/types';
import { VISUALIZATIONS } from './utils';
type Level = 'ERROR' | 'WARN' | 'OK';
@@ -48,7 +49,7 @@ export interface Query {
[x: string]: string | number | string[] | undefined;
}
-export function parseUrlQuery(urlQuery: T.RawQuery): Query {
+export function parseUrlQuery(urlQuery: RawQuery): Query {
return {
gate: getAsLevel(urlQuery['gate']),
reliability: getAsNumericRating(urlQuery['reliability']),
@@ -239,7 +240,7 @@ function convertSize(metric: string, size: number): string {
}
function mapPropertyToMetric(property?: string): string | undefined {
- const map: T.Dict<string> = {
+ const map: Dict<string> = {
analysis_date: 'analysisDate',
reliability: 'reliability_rating',
new_reliability: 'new_reliability_rating',
diff --git a/server/sonar-web/src/main/js/apps/projects/types.ts b/server/sonar-web/src/main/js/apps/projects/types.ts
index 704412a23f5..257a88aeb67 100644
--- a/server/sonar-web/src/main/js/apps/projects/types.ts
+++ b/server/sonar-web/src/main/js/apps/projects/types.ts
@@ -18,18 +18,19 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { ComponentQualifier } from '../../types/component';
+import { Dict, Visibility } from '../../types/types';
export interface Project {
analysisDate?: string;
isFavorite?: boolean;
key: string;
leakPeriodDate?: string;
- measures: T.Dict<string>;
+ measures: Dict<string>;
name: string;
projects?: number;
qualifier: ComponentQualifier;
tags: string[];
- visibility: T.Visibility;
+ visibility: Visibility;
needIssueSync?: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projects/utils.ts b/server/sonar-web/src/main/js/apps/projects/utils.ts
index d9c0446d643..947389d5099 100644
--- a/server/sonar-web/src/main/js/apps/projects/utils.ts
+++ b/server/sonar-web/src/main/js/apps/projects/utils.ts
@@ -24,6 +24,7 @@ import { translate, translateWithParameters } from '../../helpers/l10n';
import { isDiffMetric } from '../../helpers/measures';
import { RequestData } from '../../helpers/request';
import { MetricKey } from '../../types/metrics';
+import { Dict } from '../../types/types';
import { convertToFilter, Query } from './query';
interface SortingOption {
@@ -59,7 +60,7 @@ export const SORTING_LEAK_METRICS: SortingOption[] = [
{ value: 'new_lines', class: 'projects-leak-sorting-option' }
];
-export const SORTING_SWITCH: T.Dict<string> = {
+export const SORTING_SWITCH: Dict<string> = {
analysis_date: 'analysis_date',
name: 'name',
reliability: 'new_reliability',
@@ -128,7 +129,7 @@ const LEAK_METRICS = [
MetricKey.projects
];
-const METRICS_BY_VISUALIZATION: T.Dict<string[]> = {
+const METRICS_BY_VISUALIZATION: Dict<string[]> = {
risk: [
MetricKey.reliability_rating,
MetricKey.security_rating,
@@ -214,7 +215,7 @@ export function fetchProjects(query: Query, isFavorite: boolean, pageIndex = 1)
return {
facets: getFacetsMap(facets),
projects: components.map(component => {
- const componentMeasures: T.Dict<string> = {};
+ const componentMeasures: Dict<string> = {};
measures
.filter(measure => measure.component === component.key)
.forEach(measure => {
@@ -276,14 +277,14 @@ export function fetchProjectMeasures(projects: Array<{ key: string }>, query: Qu
}
function mapFacetValues(values: Array<{ val: string; count: number }>) {
- const map: T.Dict<number> = {};
+ const map: Dict<number> = {};
values.forEach(value => {
map[value.val] = value.count;
});
return map;
}
-const propertyToMetricMap: T.Dict<string | undefined> = {
+const propertyToMetricMap: Dict<string | undefined> = {
analysis_date: 'analysisDate',
reliability: 'reliability_rating',
new_reliability: 'new_reliability_rating',
@@ -309,7 +310,7 @@ const propertyToMetricMap: T.Dict<string | undefined> = {
const metricToPropertyMap = invert(propertyToMetricMap);
function getFacetsMap(facets: Facet[]) {
- const map: T.Dict<T.Dict<number>> = {};
+ const map: Dict<Dict<number>> = {};
facets.forEach(facet => {
const property = metricToPropertyMap[facet.property];
const { values } = facet;
diff --git a/server/sonar-web/src/main/js/apps/projects/visualizations/Visualizations.tsx b/server/sonar-web/src/main/js/apps/projects/visualizations/Visualizations.tsx
index db77fa42331..65b8ae39a05 100644
--- a/server/sonar-web/src/main/js/apps/projects/visualizations/Visualizations.tsx
+++ b/server/sonar-web/src/main/js/apps/projects/visualizations/Visualizations.tsx
@@ -19,6 +19,7 @@
*/
import * as React from 'react';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Dict } from '../../../types/types';
import { Project } from '../types';
import { localizeSorting } from '../utils';
import Coverage from './Coverage';
@@ -37,7 +38,7 @@ interface Props {
export default class Visualizations extends React.PureComponent<Props> {
renderVisualization(projects: Project[]) {
- const visualizationToComponent: T.Dict<any> = {
+ const visualizationToComponent: Dict<any> = {
risk: Risk,
reliability: Reliability,
security: Security,
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/App.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/App.tsx
index c3c7d9ce91f..5f12052689a 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/App.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/App.tsx
@@ -32,20 +32,21 @@ import { hasGlobalPermission } from '../../helpers/users';
import { getAppState, getCurrentUser, Store } from '../../store/rootReducer';
import { Permissions } from '../../types/permissions';
import { SettingsKey } from '../../types/settings';
+import { AppState, LoggedInUser, Visibility } from '../../types/types';
import CreateProjectForm from './CreateProjectForm';
import Header from './Header';
import Projects from './Projects';
import Search from './Search';
export interface Props {
- currentUser: T.LoggedInUser;
- appState: Pick<T.AppState, 'qualifiers'>;
+ currentUser: LoggedInUser;
+ appState: Pick<AppState, 'qualifiers'>;
}
interface State {
analyzedBefore?: Date;
createProjectForm: boolean;
- defaultProjectVisibility?: T.Visibility;
+ defaultProjectVisibility?: Visibility;
page: number;
projects: Project[];
provisioned: boolean;
@@ -54,7 +55,7 @@ interface State {
ready: boolean;
selection: string[];
total: number;
- visibility?: T.Visibility;
+ visibility?: Visibility;
}
const PAGE_SIZE = 50;
@@ -92,11 +93,11 @@ export class App extends React.PureComponent<Props, State> {
const results = await getValues({ keys: SettingsKey.DefaultProjectVisibility });
if (this.mounted && results.length > 0 && results[0].value) {
- this.setState({ defaultProjectVisibility: results[0].value as T.Visibility });
+ this.setState({ defaultProjectVisibility: results[0].value as Visibility });
}
};
- handleDefaultProjectVisibilityChange = async (visibility: T.Visibility) => {
+ handleDefaultProjectVisibilityChange = async (visibility: Visibility) => {
await changeProjectDefaultVisibility(visibility);
if (this.mounted) {
@@ -155,7 +156,7 @@ export class App extends React.PureComponent<Props, State> {
);
};
- onVisibilityChanged = (newVisibility: T.Visibility | 'all') => {
+ onVisibilityChanged = (newVisibility: Visibility | 'all') => {
this.setState(
{
ready: false,
@@ -262,7 +263,7 @@ export class App extends React.PureComponent<Props, State> {
const mapStateToProps = (state: Store) => ({
appState: getAppState(state),
- currentUser: getCurrentUser(state) as T.LoggedInUser
+ currentUser: getCurrentUser(state) as LoggedInUser
});
export default connect(mapStateToProps)(App);
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
index 284f42c0e2f..f2f28010c3e 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/BulkApplyTemplateModal.tsx
@@ -27,6 +27,7 @@ import MandatoryFieldMarker from '../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../components/ui/MandatoryFieldsExplanation';
import { toNotSoISOString } from '../../helpers/dates';
import { translate, translateWithParameters } from '../../helpers/l10n';
+import { PermissionTemplate } from '../../types/types';
export interface Props {
analyzedBefore: Date | undefined;
@@ -42,7 +43,7 @@ interface State {
done: boolean;
loading: boolean;
permissionTemplate?: string;
- permissionTemplates?: T.PermissionTemplate[];
+ permissionTemplates?: PermissionTemplate[];
submitting: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx
index 06fe0785b93..406956ce2b3 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/ChangeDefaultVisibilityForm.tsx
@@ -23,15 +23,16 @@ import Modal from '../../components/controls/Modal';
import Radio from '../../components/controls/Radio';
import { Alert } from '../../components/ui/Alert';
import { translate } from '../../helpers/l10n';
+import { Visibility } from '../../types/types';
export interface Props {
- defaultVisibility: T.Visibility;
+ defaultVisibility: Visibility;
onClose: () => void;
- onConfirm: (visiblity: T.Visibility) => void;
+ onConfirm: (visiblity: Visibility) => void;
}
interface State {
- visibility: T.Visibility;
+ visibility: Visibility;
}
export default class ChangeDefaultVisibilityForm extends React.PureComponent<Props, State> {
@@ -45,7 +46,7 @@ export default class ChangeDefaultVisibilityForm extends React.PureComponent<Pro
this.props.onClose();
};
- handleVisibilityChange = (visibility: T.Visibility) => {
+ handleVisibilityChange = (visibility: Visibility) => {
this.setState({ visibility });
};
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx
index b9b7f1aa40c..0d1abe85f31 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/CreateProjectForm.tsx
@@ -29,9 +29,10 @@ import MandatoryFieldMarker from '../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../helpers/l10n';
import { getProjectUrl } from '../../helpers/urls';
+import { Visibility } from '../../types/types';
interface Props {
- defaultProjectVisibility?: T.Visibility;
+ defaultProjectVisibility?: Visibility;
onClose: () => void;
onProjectCreated: () => void;
}
@@ -41,7 +42,7 @@ interface State {
key: string;
loading: boolean;
name: string;
- visibility?: T.Visibility;
+ visibility?: Visibility;
// add index declaration to be able to do `this.setState({ [name]: value });`
[x: string]: any;
}
@@ -82,7 +83,7 @@ export default class CreateProjectForm extends React.PureComponent<Props, State>
this.setState({ [name]: value });
};
- handleVisibilityChange = (visibility: T.Visibility) => {
+ handleVisibilityChange = (visibility: Visibility) => {
this.setState({ visibility });
};
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/Header.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/Header.tsx
index 186366ffc0f..233d2bc204c 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/Header.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/Header.tsx
@@ -20,13 +20,14 @@
import * as React from 'react';
import { Button, EditButton } from '../../components/controls/buttons';
import { translate } from '../../helpers/l10n';
+import { Visibility } from '../../types/types';
import ChangeDefaultVisibilityForm from './ChangeDefaultVisibilityForm';
export interface Props {
- defaultProjectVisibility?: T.Visibility;
+ defaultProjectVisibility?: Visibility;
hasProvisionPermission?: boolean;
onProjectCreate: () => void;
- onChangeDefaultProjectVisibility: (visibility: T.Visibility) => void;
+ onChangeDefaultProjectVisibility: (visibility: Visibility) => void;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx
index 6bcb30683f8..0e603ac00da 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx
@@ -26,11 +26,12 @@ import Tooltip from '../../components/controls/Tooltip';
import QualifierIcon from '../../components/icons/QualifierIcon';
import DateFormatter from '../../components/intl/DateFormatter';
import { getComponentOverviewUrl } from '../../helpers/urls';
+import { LoggedInUser } from '../../types/types';
import './ProjectRow.css';
import ProjectRowActions from './ProjectRowActions';
interface Props {
- currentUser: Pick<T.LoggedInUser, 'login'>;
+ currentUser: Pick<LoggedInUser, 'login'>;
onProjectCheck: (project: Project, checked: boolean) => void;
project: Project;
selected: boolean;
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx
index 8110759fa59..55c24867648 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRowActions.tsx
@@ -24,11 +24,12 @@ import ActionsDropdown, { ActionsDropdownItem } from '../../components/controls/
import DeferredSpinner from '../../components/ui/DeferredSpinner';
import { translate } from '../../helpers/l10n';
import { getComponentPermissionsUrl } from '../../helpers/urls';
+import { LoggedInUser } from '../../types/types';
import ApplyTemplate from '../permissions/project/components/ApplyTemplate';
import RestoreAccessModal from './RestoreAccessModal';
export interface Props {
- currentUser: Pick<T.LoggedInUser, 'login'>;
+ currentUser: Pick<LoggedInUser, 'login'>;
project: Project;
}
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx
index a5b575c8bae..10baa2205b4 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx
@@ -21,10 +21,11 @@ import classNames from 'classnames';
import * as React from 'react';
import { Project } from '../../api/components';
import { translate } from '../../helpers/l10n';
+import { LoggedInUser } from '../../types/types';
import ProjectRow from './ProjectRow';
interface Props {
- currentUser: Pick<T.LoggedInUser, 'login'>;
+ currentUser: Pick<LoggedInUser, 'login'>;
onProjectDeselected: (project: string) => void;
onProjectSelected: (project: string) => void;
projects: Project[];
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx
index c651f31e4c5..488efd48966 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/RestoreAccessModal.tsx
@@ -24,9 +24,10 @@ import { grantPermissionToUser } from '../../api/permissions';
import { ResetButtonLink, SubmitButton } from '../../components/controls/buttons';
import Modal from '../../components/controls/Modal';
import { translate } from '../../helpers/l10n';
+import { LoggedInUser } from '../../types/types';
interface Props {
- currentUser: Pick<T.LoggedInUser, 'login'>;
+ currentUser: Pick<LoggedInUser, 'login'>;
onClose: () => void;
onRestoreAccess: () => void;
project: Project;
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
index 289a64ba123..c7932a0a25c 100644
--- a/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
+++ b/server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
@@ -28,6 +28,7 @@ import SearchBox from '../../components/controls/SearchBox';
import SelectLegacy from '../../components/controls/SelectLegacy';
import QualifierIcon from '../../components/icons/QualifierIcon';
import { translate } from '../../helpers/l10n';
+import { Visibility } from '../../types/types';
import BulkApplyTemplateModal from './BulkApplyTemplateModal';
import DeleteModal from './DeleteModal';
@@ -49,7 +50,7 @@ export interface Props {
selection: any[];
topLevelQualifiers: string[];
total: number;
- visibility?: T.Visibility;
+ visibility?: Visibility;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/App.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/App.tsx
index e2bd83f3f84..7ff06229f15 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/App.tsx
@@ -33,6 +33,7 @@ import {
removeWhitePageClass
} from '../../../helpers/pages';
import { getQualityGateUrl } from '../../../helpers/urls';
+import { QualityGate } from '../../../types/types';
import '../styles.css';
import Details from './Details';
import List from './List';
@@ -41,7 +42,7 @@ import ListHeader from './ListHeader';
interface State {
canCreate: boolean;
loading: boolean;
- qualityGates: T.QualityGate[];
+ qualityGates: QualityGate[];
}
class App extends React.PureComponent<Pick<WithRouterProps, 'params' | 'router'>, State> {
@@ -86,12 +87,12 @@ class App extends React.PureComponent<Pick<WithRouterProps, 'params' | 'router'>
);
};
- openDefault(qualityGates: T.QualityGate[]) {
+ openDefault(qualityGates: QualityGate[]) {
const defaultQualityGate = qualityGates.find(gate => Boolean(gate.isDefault))!;
this.props.router.replace(getQualityGateUrl(String(defaultQualityGate.id)));
}
- handleSetDefault = (qualityGate: T.QualityGate) => {
+ handleSetDefault = (qualityGate: QualityGate) => {
this.setState(({ qualityGates }) => {
return {
qualityGates: qualityGates.map(candidate => {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/Condition.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/Condition.tsx
index c03a1bc871f..7a6bc628c0f 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/Condition.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/Condition.tsx
@@ -24,16 +24,17 @@ import { DeleteButton, EditButton } from '../../../components/controls/buttons';
import ConfirmModal from '../../../components/controls/ConfirmModal';
import { getLocalizedMetricName, translate, translateWithParameters } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
+import { Condition as ConditionType, Metric, QualityGate } from '../../../types/types';
import { getLocalizedMetricNameNoDiffMetric } from '../utils';
import ConditionModal from './ConditionModal';
interface Props {
- condition: T.Condition;
+ condition: ConditionType;
canEdit: boolean;
- metric: T.Metric;
- onRemoveCondition: (Condition: T.Condition) => void;
- onSaveCondition: (newCondition: T.Condition, oldCondition: T.Condition) => void;
- qualityGate: T.QualityGate;
+ metric: Metric;
+ onRemoveCondition: (Condition: ConditionType) => void;
+ onSaveCondition: (newCondition: ConditionType, oldCondition: ConditionType) => void;
+ qualityGate: QualityGate;
updated?: boolean;
}
@@ -51,7 +52,7 @@ export default class Condition extends React.PureComponent<Props, State> {
};
}
- handleUpdateCondition = (newCondition: T.Condition) => {
+ handleUpdateCondition = (newCondition: ConditionType) => {
this.props.onSaveCondition(newCondition, this.props.condition);
};
@@ -71,7 +72,7 @@ export default class Condition extends React.PureComponent<Props, State> {
this.setState({ deleteFormOpen: false });
};
- removeCondition = (condition: T.Condition) => {
+ removeCondition = (condition: ConditionType) => {
deleteCondition({ id: condition.id }).then(
() => this.props.onRemoveCondition(condition),
() => {}
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionModal.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionModal.tsx
index c28d5966448..cb13248790e 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionModal.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionModal.tsx
@@ -24,25 +24,26 @@ import Radio from '../../../components/controls/Radio';
import { Alert } from '../../../components/ui/Alert';
import { getLocalizedMetricName, translate } from '../../../helpers/l10n';
import { isDiffMetric } from '../../../helpers/measures';
+import { Condition, Metric, QualityGate } from '../../../types/types';
import { getPossibleOperators } from '../utils';
import ConditionOperator from './ConditionOperator';
import MetricSelect from './MetricSelect';
import ThresholdInput from './ThresholdInput';
interface Props {
- condition?: T.Condition;
- metric?: T.Metric;
- metrics?: T.Metric[];
+ condition?: Condition;
+ metric?: Metric;
+ metrics?: Metric[];
header: string;
- onAddCondition: (condition: T.Condition) => void;
+ onAddCondition: (condition: Condition) => void;
onClose: () => void;
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
}
interface State {
error: string;
errorMessage?: string;
- metric?: T.Metric;
+ metric?: Metric;
op?: string;
scope: 'new' | 'overall';
}
@@ -58,7 +59,7 @@ export default class ConditionModal extends React.PureComponent<Props, State> {
};
}
- getSinglePossibleOperator(metric: T.Metric) {
+ getSinglePossibleOperator(metric: Metric) {
const operators = getPossibleOperators(metric);
return Array.isArray(operators) ? undefined : operators;
}
@@ -66,7 +67,7 @@ export default class ConditionModal extends React.PureComponent<Props, State> {
handleFormSubmit = () => {
if (this.state.metric) {
const { condition, qualityGate } = this.props;
- const newCondition: T.Omit<T.Condition, 'id'> = {
+ const newCondition: Omit<Condition, 'id'> = {
metric: this.state.metric.key,
op: this.getSinglePossibleOperator(this.state.metric) || this.state.op,
error: this.state.error
@@ -94,7 +95,7 @@ export default class ConditionModal extends React.PureComponent<Props, State> {
});
};
- handleMetricChange = (metric: T.Metric) => {
+ handleMetricChange = (metric: Metric) => {
this.setState({ metric, op: undefined, error: '' });
};
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionOperator.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionOperator.tsx
index 3f70f2149e6..0b249ad49d2 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionOperator.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/ConditionOperator.tsx
@@ -20,10 +20,11 @@
import * as React from 'react';
import SelectLegacy from '../../../components/controls/SelectLegacy';
import { translate } from '../../../helpers/l10n';
+import { Metric } from '../../../types/types';
import { getPossibleOperators } from '../utils';
interface Props {
- metric: T.Metric;
+ metric: Metric;
onOperatorChange: (op: string) => void;
op?: string;
}
@@ -33,7 +34,7 @@ export default class ConditionOperator extends React.PureComponent<Props> {
this.props.onOperatorChange(value);
};
- getLabel(op: string, metric: T.Metric) {
+ getLabel(op: string, metric: Metric) {
return metric.type === 'RATING'
? translate('quality_gates.operator', op, 'rating')
: translate('quality_gates.operator', op);
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/Conditions.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/Conditions.tsx
index 6d5d1fd5fd9..43c01d8f9b2 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/Conditions.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/Conditions.tsx
@@ -27,18 +27,25 @@ import { Alert } from '../../../components/ui/Alert';
import { getLocalizedMetricName, translate } from '../../../helpers/l10n';
import { isDiffMetric } from '../../../helpers/measures';
import { MetricKey } from '../../../types/metrics';
+import {
+ AppState,
+ Condition as ConditionType,
+ Dict,
+ Metric,
+ QualityGate
+} from '../../../types/types';
import Condition from './Condition';
import ConditionModal from './ConditionModal';
interface Props {
- appState: Pick<T.AppState, 'branchesEnabled'>;
+ appState: Pick<AppState, 'branchesEnabled'>;
canEdit: boolean;
- conditions: T.Condition[];
- metrics: T.Dict<T.Metric>;
- onAddCondition: (condition: T.Condition) => void;
- onRemoveCondition: (Condition: T.Condition) => void;
- onSaveCondition: (newCondition: T.Condition, oldCondition: T.Condition) => void;
- qualityGate: T.QualityGate;
+ conditions: ConditionType[];
+ metrics: Dict<Metric>;
+ onAddCondition: (condition: ConditionType) => void;
+ onRemoveCondition: (Condition: ConditionType) => void;
+ onSaveCondition: (newCondition: ConditionType, oldCondition: ConditionType) => void;
+ qualityGate: QualityGate;
updatedConditionId?: number;
}
@@ -51,7 +58,7 @@ const FORBIDDEN_METRICS: string[] = [
];
export class Conditions extends React.PureComponent<Props> {
- renderConditionsTable = (conditions: T.Condition[], scope: 'new' | 'overall') => {
+ renderConditionsTable = (conditions: ConditionType[], scope: 'new' | 'overall') => {
const {
qualityGate,
metrics,
@@ -111,7 +118,7 @@ export class Conditions extends React.PureComponent<Props> {
isDiffMetric(condition.metric)
);
- const duplicates: T.Condition[] = [];
+ const duplicates: ConditionType[] = [];
const savedConditions = existingConditions.filter(condition => condition.id != null);
savedConditions.forEach(condition => {
const sameCount = savedConditions.filter(sample => sample.metric === condition.metric).length;
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx
index fbace702f0e..7176ad5626f 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/CopyQualityGateForm.tsx
@@ -25,11 +25,12 @@ import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
import { getQualityGateUrl } from '../../../helpers/urls';
+import { QualityGate } from '../../../types/types';
interface Props {
onClose: () => void;
onCopy: () => Promise<void>;
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
router: Pick<Router, 'push'>;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx
index db52e78926a..db949d401d1 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/DeleteQualityGateForm.tsx
@@ -24,10 +24,11 @@ import ConfirmButton from '../../../components/controls/ConfirmButton';
import { Router, withRouter } from '../../../components/hoc/withRouter';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getQualityGatesUrl } from '../../../helpers/urls';
+import { QualityGate } from '../../../types/types';
interface Props {
onDelete: () => Promise<void>;
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
router: Pick<Router, 'push'>;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/Details.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/Details.tsx
index 9b7f5c7cd33..b7a10ee2de6 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/Details.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/Details.tsx
@@ -26,19 +26,20 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
import { fetchMetrics } from '../../../store/rootActions';
import { getMetrics, Store } from '../../../store/rootReducer';
+import { Condition, Dict, Metric, QualityGate } from '../../../types/types';
import { addCondition, checkIfDefault, deleteCondition, replaceCondition } from '../utils';
import DetailsContent from './DetailsContent';
import DetailsHeader from './DetailsHeader';
interface OwnProps {
id: string;
- onSetDefault: (qualityGate: T.QualityGate) => void;
- qualityGates: T.QualityGate[];
+ onSetDefault: (qualityGate: QualityGate) => void;
+ qualityGates: QualityGate[];
refreshQualityGates: () => Promise<void>;
}
interface StateToProps {
- metrics: T.Dict<T.Metric>;
+ metrics: Dict<Metric>;
}
interface DispatchToProps {
@@ -49,7 +50,7 @@ type Props = StateToProps & DispatchToProps & OwnProps;
interface State {
loading: boolean;
- qualityGate?: T.QualityGate;
+ qualityGate?: QualityGate;
updatedConditionId?: number;
}
@@ -90,7 +91,7 @@ export class Details extends React.PureComponent<Props, State> {
);
};
- handleAddCondition = (condition: T.Condition) => {
+ handleAddCondition = (condition: Condition) => {
this.setState(({ qualityGate }) => {
if (!qualityGate) {
return null;
@@ -103,7 +104,7 @@ export class Details extends React.PureComponent<Props, State> {
});
};
- handleSaveCondition = (newCondition: T.Condition, oldCondition: T.Condition) => {
+ handleSaveCondition = (newCondition: Condition, oldCondition: Condition) => {
this.setState(({ qualityGate }) => {
if (!qualityGate) {
return null;
@@ -116,7 +117,7 @@ export class Details extends React.PureComponent<Props, State> {
});
};
- handleRemoveCondition = (condition: T.Condition) => {
+ handleRemoveCondition = (condition: Condition) => {
this.setState(({ qualityGate }) => {
if (!qualityGate) {
return null;
@@ -135,7 +136,7 @@ export class Details extends React.PureComponent<Props, State> {
return null;
}
this.props.onSetDefault(qualityGate);
- const newQualityGate: T.QualityGate = {
+ const newQualityGate: QualityGate = {
...qualityGate,
actions: { ...qualityGate.actions, delete: false, setAsDefault: false }
};
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsContent.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsContent.tsx
index 07fc3d5179c..9fe3cd10007 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsContent.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsContent.tsx
@@ -21,17 +21,18 @@ import * as React from 'react';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import { Alert } from '../../../components/ui/Alert';
import { translate } from '../../../helpers/l10n';
+import { Condition, Dict, Metric, QualityGate } from '../../../types/types';
import Conditions from './Conditions';
import Projects from './Projects';
import QualityGatePermissions from './QualityGatePermissions';
export interface DetailsContentProps {
isDefault?: boolean;
- metrics: T.Dict<T.Metric>;
- onAddCondition: (condition: T.Condition) => void;
- onRemoveCondition: (Condition: T.Condition) => void;
- onSaveCondition: (newCondition: T.Condition, oldCondition: T.Condition) => void;
- qualityGate: T.QualityGate;
+ metrics: Dict<Metric>;
+ onAddCondition: (condition: Condition) => void;
+ onRemoveCondition: (Condition: Condition) => void;
+ onSaveCondition: (newCondition: Condition, oldCondition: Condition) => void;
+ qualityGate: QualityGate;
updatedConditionId?: number;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsHeader.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsHeader.tsx
index 5bd11877f2a..f84de737e80 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/DetailsHeader.tsx
@@ -23,6 +23,7 @@ import { Button } from '../../../components/controls/buttons';
import ModalButton from '../../../components/controls/ModalButton';
import Tooltip from '../../../components/controls/Tooltip';
import { translate } from '../../../helpers/l10n';
+import { QualityGate } from '../../../types/types';
import BuiltInQualityGateBadge from './BuiltInQualityGateBadge';
import CopyQualityGateForm from './CopyQualityGateForm';
import DeleteQualityGateForm from './DeleteQualityGateForm';
@@ -30,7 +31,7 @@ import RenameQualityGateForm from './RenameQualityGateForm';
interface Props {
onSetDefault: () => void;
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
refreshItem: () => Promise<void>;
refreshList: () => Promise<void>;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/List.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/List.tsx
index 873cb4e4870..e7dca0aaa67 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/List.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/List.tsx
@@ -21,10 +21,11 @@ import * as React from 'react';
import { Link } from 'react-router';
import { translate } from '../../../helpers/l10n';
import { getQualityGateUrl } from '../../../helpers/urls';
+import { QualityGate } from '../../../types/types';
import BuiltInQualityGateBadge from './BuiltInQualityGateBadge';
interface Props {
- qualityGates: T.QualityGate[];
+ qualityGates: QualityGate[];
}
export default function List({ qualityGates }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/MetricSelect.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/MetricSelect.tsx
index 089d6fafce2..7a213d430a5 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/MetricSelect.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/MetricSelect.tsx
@@ -21,12 +21,13 @@ import { sortBy } from 'lodash';
import * as React from 'react';
import SelectLegacy from '../../../components/controls/SelectLegacy';
import { getLocalizedMetricDomain, translate } from '../../../helpers/l10n';
+import { Metric } from '../../../types/types';
import { getLocalizedMetricNameNoDiffMetric } from '../utils';
interface Props {
- metric?: T.Metric;
- metrics: T.Metric[];
- onMetricChange: (metric: T.Metric) => void;
+ metric?: Metric;
+ metrics: Metric[];
+ onMetricChange: (metric: Metric) => void;
}
interface Option {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/PermissionItem.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/PermissionItem.tsx
index 4c3067e598a..9d2558a05cc 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/PermissionItem.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/PermissionItem.tsx
@@ -22,10 +22,11 @@ import { DeleteButton } from '../../../components/controls/buttons';
import GroupIcon from '../../../components/icons/GroupIcon';
import Avatar from '../../../components/ui/Avatar';
import { Group, isUser } from '../../../types/quality-gates';
+import { UserBase } from '../../../types/types';
export interface PermissionItemProps {
- onClickDelete: (item: T.UserBase | Group) => void;
- item: T.UserBase | Group;
+ onClickDelete: (item: UserBase | Group) => void;
+ item: UserBase | Group;
}
export default function PermissionItem(props: PermissionItemProps) {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/Projects.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/Projects.tsx
index ef0b28780ac..f7a57ab5233 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/Projects.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/Projects.tsx
@@ -29,10 +29,11 @@ import SelectList, {
SelectListSearchParams
} from '../../../components/controls/SelectList';
import { translate } from '../../../helpers/l10n';
+import { QualityGate } from '../../../types/types';
interface Props {
canEdit?: boolean;
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissions.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissions.tsx
index 2391486abe1..9844c11fd07 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissions.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissions.tsx
@@ -28,10 +28,11 @@ import {
searchUsers
} from '../../../api/quality-gates';
import { Group, isUser, SearchPermissionsParameters } from '../../../types/quality-gates';
+import { QualityGate, UserBase } from '../../../types/types';
import QualityGatePermissionsRenderer from './QualityGatePermissionsRenderer';
interface Props {
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
}
interface State {
@@ -39,8 +40,8 @@ interface State {
submitting: boolean;
loading: boolean;
showAddModal: boolean;
- permissionToDelete?: T.UserBase | Group;
- users: T.UserBase[];
+ permissionToDelete?: UserBase | Group;
+ users: UserBase[];
}
export default class QualityGatePermissions extends React.Component<Props, State> {
@@ -95,7 +96,7 @@ export default class QualityGatePermissions extends React.Component<Props, State
this.setState({ showAddModal: true });
};
- handleSubmitAddPermission = async (item: T.UserBase | Group) => {
+ handleSubmitAddPermission = async (item: UserBase | Group) => {
const { qualityGate } = this.props;
this.setState({ submitting: true });
@@ -135,11 +136,11 @@ export default class QualityGatePermissions extends React.Component<Props, State
this.setState({ permissionToDelete: undefined });
};
- handleClickDeletePermission = (permissionToDelete?: T.UserBase | Group) => {
+ handleClickDeletePermission = (permissionToDelete?: UserBase | Group) => {
this.setState({ permissionToDelete });
};
- handleConfirmDeletePermission = async (item: T.UserBase | Group) => {
+ handleConfirmDeletePermission = async (item: UserBase | Group) => {
const { qualityGate } = this.props;
let error = false;
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModal.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModal.tsx
index a4ae9357c1b..18155f51d33 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModal.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModal.tsx
@@ -21,20 +21,21 @@ import { debounce } from 'lodash';
import * as React from 'react';
import { searchGroups, searchUsers } from '../../../api/quality-gates';
import { Group, SearchPermissionsParameters } from '../../../types/quality-gates';
+import { QualityGate, UserBase } from '../../../types/types';
import QualityGatePermissionsAddModalRenderer from './QualityGatePermissionsAddModalRenderer';
interface Props {
onClose: () => void;
- onSubmit: (selection: T.UserBase | Group) => void;
- qualityGate: T.QualityGate;
+ onSubmit: (selection: UserBase | Group) => void;
+ qualityGate: QualityGate;
submitting: boolean;
}
interface State {
loading: boolean;
query?: string;
- searchResults: Array<T.UserBase | Group>;
- selection?: T.UserBase | Group;
+ searchResults: Array<UserBase | Group>;
+ selection?: UserBase | Group;
}
const DEBOUNCE_DELAY = 250;
@@ -91,7 +92,7 @@ export default class QualityGatePermissionsAddModal extends React.Component<Prop
}
};
- handleSelection = (selection: T.UserBase | Group) => {
+ handleSelection = (selection: UserBase | Group) => {
this.setState({ selection });
};
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModalRenderer.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModalRenderer.tsx
index bf1dc1944a5..efbb83991fd 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModalRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModalRenderer.tsx
@@ -25,20 +25,21 @@ import GroupIcon from '../../../components/icons/GroupIcon';
import Avatar from '../../../components/ui/Avatar';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { Group, isUser } from '../../../types/quality-gates';
+import { UserBase } from '../../../types/types';
export interface QualityGatePermissionsAddModalRendererProps {
onClose: () => void;
onInputChange: (query: string) => void;
onSubmit: (event: React.SyntheticEvent<HTMLFormElement>) => void;
- onSelection: (selection: T.UserBase | Group) => void;
+ onSelection: (selection: UserBase | Group) => void;
submitting: boolean;
loading: boolean;
query: string;
- searchResults: Array<T.UserBase | Group>;
- selection?: T.UserBase | Group;
+ searchResults: Array<UserBase | Group>;
+ selection?: UserBase | Group;
}
-type Option = (T.UserBase | Group) & { value: string };
+type Option = (UserBase | Group) & { value: string };
export default function QualityGatePermissionsAddModalRenderer(
props: QualityGatePermissionsAddModalRendererProps
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsRenderer.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsRenderer.tsx
index aab84606c75..74dfc7a3851 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsRenderer.tsx
@@ -24,6 +24,7 @@ import ConfirmModal from '../../../components/controls/ConfirmModal';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
import { Group, isUser } from '../../../types/quality-gates';
+import { QualityGate, UserBase } from '../../../types/types';
import PermissionItem from './PermissionItem';
import QualityGatePermissionsAddModal from './QualityGatePermissionsAddModal';
@@ -32,15 +33,15 @@ export interface QualityGatePermissionsRendererProps {
loading: boolean;
onClickAddPermission: () => void;
onCloseAddPermission: () => void;
- onSubmitAddPermission: (item: T.UserBase | Group) => void;
+ onSubmitAddPermission: (item: UserBase | Group) => void;
onCloseDeletePermission: () => void;
- onConfirmDeletePermission: (item: T.UserBase | Group) => void;
- onClickDeletePermission: (item: T.UserBase | Group) => void;
- permissionToDelete?: T.UserBase | Group;
- qualityGate: T.QualityGate;
+ onConfirmDeletePermission: (item: UserBase | Group) => void;
+ onClickDeletePermission: (item: UserBase | Group) => void;
+ permissionToDelete?: UserBase | Group;
+ qualityGate: QualityGate;
showAddModal: boolean;
submitting: boolean;
- users: T.UserBase[];
+ users: UserBase[];
}
export default function QualityGatePermissionsRenderer(props: QualityGatePermissionsRendererProps) {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx
index 8113666ba3e..45dad5c864e 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/RenameQualityGateForm.tsx
@@ -23,11 +23,12 @@ import ConfirmModal from '../../../components/controls/ConfirmModal';
import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
+import { QualityGate } from '../../../types/types';
interface Props {
onClose: () => void;
onRename: () => Promise<void>;
- qualityGate: T.QualityGate;
+ qualityGate: QualityGate;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/components/ThresholdInput.tsx b/server/sonar-web/src/main/js/apps/quality-gates/components/ThresholdInput.tsx
index 1776243fe98..a2af32073f2 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/components/ThresholdInput.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-gates/components/ThresholdInput.tsx
@@ -19,11 +19,12 @@
*/
import * as React from 'react';
import SelectLegacy from '../../../components/controls/SelectLegacy';
+import { Metric } from '../../../types/types';
interface Props {
name: string;
value: string;
- metric: T.Metric;
+ metric: Metric;
onChange: (value: string) => void;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-gates/utils.ts b/server/sonar-web/src/main/js/apps/quality-gates/utils.ts
index 146f820c9d3..edba64a5b11 100644
--- a/server/sonar-web/src/main/js/apps/quality-gates/utils.ts
+++ b/server/sonar-web/src/main/js/apps/quality-gates/utils.ts
@@ -21,29 +21,30 @@ import getStore from '../../app/utils/getStore';
import { getLocalizedMetricName } from '../../helpers/l10n';
import { isDiffMetric } from '../../helpers/measures';
import { getMetricByKey } from '../../store/rootReducer';
+import { Condition, Metric, QualityGate } from '../../types/types';
-export function checkIfDefault(qualityGate: T.QualityGate, list: T.QualityGate[]): boolean {
+export function checkIfDefault(qualityGate: QualityGate, list: QualityGate[]): boolean {
const finding = list.find(candidate => candidate.id === qualityGate.id);
return (finding && finding.isDefault) || false;
}
-export function addCondition(qualityGate: T.QualityGate, condition: T.Condition): T.QualityGate {
+export function addCondition(qualityGate: QualityGate, condition: Condition): QualityGate {
const oldConditions = qualityGate.conditions || [];
const conditions = [...oldConditions, condition];
return { ...qualityGate, conditions };
}
-export function deleteCondition(qualityGate: T.QualityGate, condition: T.Condition): T.QualityGate {
+export function deleteCondition(qualityGate: QualityGate, condition: Condition): QualityGate {
const conditions =
qualityGate.conditions && qualityGate.conditions.filter(candidate => candidate !== condition);
return { ...qualityGate, conditions };
}
export function replaceCondition(
- qualityGate: T.QualityGate,
- newCondition: T.Condition,
- oldCondition: T.Condition
-): T.QualityGate {
+ qualityGate: QualityGate,
+ newCondition: Condition,
+ oldCondition: Condition
+): QualityGate {
const conditions =
qualityGate.conditions &&
qualityGate.conditions.map(candidate => {
@@ -52,7 +53,7 @@ export function replaceCondition(
return { ...qualityGate, conditions };
}
-export function getPossibleOperators(metric: T.Metric) {
+export function getPossibleOperators(metric: Metric) {
if (metric.direction === 1) {
return 'LT';
} else if (metric.direction === -1) {
@@ -66,7 +67,7 @@ export function metricKeyExists(key: string) {
return getMetricByKey(getStore().getState(), key) !== undefined;
}
-function getNoDiffMetric(metric: T.Metric) {
+function getNoDiffMetric(metric: Metric) {
const store = getStore().getState();
const regularMetricKey = metric.key.replace(/^new_/, '');
if (isDiffMetric(metric.key) && metricKeyExists(regularMetricKey)) {
@@ -78,6 +79,6 @@ function getNoDiffMetric(metric: T.Metric) {
}
}
-export function getLocalizedMetricNameNoDiffMetric(metric: T.Metric) {
+export function getLocalizedMetricNameNoDiffMetric(metric: Metric) {
return getLocalizedMetricName(getNoDiffMetric(metric));
}
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/changelog/ChangesList.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/changelog/ChangesList.tsx
index ef0d100ba13..44bfa0560b2 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/changelog/ChangesList.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/changelog/ChangesList.tsx
@@ -18,11 +18,12 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { Dict } from '../../../types/types';
import ParameterChange from './ParameterChange';
import SeverityChange from './SeverityChange';
interface Props {
- changes: T.Dict<string | null>;
+ changes: Dict<string | null>;
}
export default function ChangesList({ changes }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultActivation.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultActivation.tsx
index c74b3c05461..2b09c0fd60f 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultActivation.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultActivation.tsx
@@ -24,6 +24,7 @@ import { Button } from '../../../components/controls/buttons';
import { lazyLoadComponent } from '../../../components/lazyLoadComponent';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
+import { RuleDetails } from '../../../types/types';
const ActivationFormModal = lazyLoadComponent(
() => import('../../coding-rules/components/ActivationFormModal'),
@@ -37,7 +38,7 @@ interface Props {
}
interface State {
- rule?: T.RuleDetails;
+ rule?: RuleDetails;
state: 'closed' | 'opening' | 'open';
}
@@ -73,7 +74,7 @@ export default class ComparisonResultActivation extends React.PureComponent<Prop
this.setState({ state: 'closed' });
};
- isOpen(state: State): state is { state: 'open'; rule: T.RuleDetails } {
+ isOpen(state: State): state is { state: 'open'; rule: RuleDetails } {
return state.state === 'open';
}
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx
index 172fde88c4e..8265721ef32 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx
@@ -25,10 +25,11 @@ import ChevronRightIcon from '../../../components/icons/ChevronRightIcon';
import SeverityIcon from '../../../components/icons/SeverityIcon';
import { translateWithParameters } from '../../../helpers/l10n';
import { getRulesUrl } from '../../../helpers/urls';
+import { Dict } from '../../../types/types';
import ComparisonEmpty from './ComparisonEmpty';
import ComparisonResultActivation from './ComparisonResultActivation';
-type Params = T.Dict<string>;
+type Params = Dict<string>;
interface Props extends CompareResponse {
leftProfile: Profile;
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/components/App.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/components/App.tsx
index 883481de687..2f7ee6c757a 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/components/App.tsx
@@ -22,13 +22,14 @@ import { Helmet } from 'react-helmet-async';
import { Actions, getExporters, searchQualityProfiles } from '../../../api/quality-profiles';
import Suggestions from '../../../app/components/embed-docs-modal/Suggestions';
import { translate } from '../../../helpers/l10n';
+import { Languages } from '../../../types/types';
import '../styles.css';
import { Exporter, Profile } from '../types';
import { sortProfiles } from '../utils';
interface Props {
children: React.ReactElement<any>;
- languages: T.Languages;
+ languages: Languages;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritance.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritance.tsx
index 1ff81921b64..bbb0f39c358 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritance.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritance.tsx
@@ -22,6 +22,7 @@ import * as React from 'react';
import { getProfileInheritance } from '../../../api/quality-profiles';
import { Button } from '../../../components/controls/buttons';
import { translate } from '../../../helpers/l10n';
+import { ProfileInheritanceDetails } from '../../../types/types';
import { Profile } from '../types';
import ChangeParentForm from './ChangeParentForm';
import ProfileInheritanceBox from './ProfileInheritanceBox';
@@ -33,11 +34,11 @@ interface Props {
}
interface State {
- ancestors?: T.ProfileInheritanceDetails[];
- children?: T.ProfileInheritanceDetails[];
+ ancestors?: ProfileInheritanceDetails[];
+ children?: ProfileInheritanceDetails[];
formOpen: boolean;
loading: boolean;
- profile?: T.ProfileInheritanceDetails;
+ profile?: ProfileInheritanceDetails;
}
export default class ProfileInheritance extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritanceBox.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritanceBox.tsx
index d3fad78f1d1..3113a7b8c28 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritanceBox.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileInheritanceBox.tsx
@@ -21,6 +21,7 @@ import classNames from 'classnames';
import * as React from 'react';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { ProfileInheritanceDetails } from '../../../types/types';
import BuiltInQualityProfileBadge from '../components/BuiltInQualityProfileBadge';
import ProfileLink from '../components/ProfileLink';
@@ -30,7 +31,7 @@ interface Props {
displayLink?: boolean;
extendsBuiltIn?: boolean;
language: string;
- profile: T.ProfileInheritanceDetails;
+ profile: ProfileInheritanceDetails;
type?: string;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissions.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissions.tsx
index b3f42f3adfc..01d64856682 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissions.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissions.tsx
@@ -26,6 +26,7 @@ import {
} from '../../../api/quality-profiles';
import { Button } from '../../../components/controls/buttons';
import { translate } from '../../../helpers/l10n';
+import { UserSelected } from '../../../types/types';
import { Profile } from '../types';
import ProfilePermissionsForm from './ProfilePermissionsForm';
import ProfilePermissionsGroup from './ProfilePermissionsGroup';
@@ -43,7 +44,7 @@ interface State {
addUserForm: boolean;
groups?: Group[];
loading: boolean;
- users?: T.UserSelected[];
+ users?: UserSelected[];
}
export default class ProfilePermissions extends React.PureComponent<Props, State> {
@@ -101,7 +102,7 @@ export default class ProfilePermissions extends React.PureComponent<Props, State
}
};
- handleUserAdd = (addedUser: T.UserSelected) => {
+ handleUserAdd = (addedUser: UserSelected) => {
if (this.mounted) {
this.setState((state: State) => ({
addUserForm: false,
@@ -110,7 +111,7 @@ export default class ProfilePermissions extends React.PureComponent<Props, State
}
};
- handleUserDelete = (removedUser: T.UserSelected) => {
+ handleUserDelete = (removedUser: UserSelected) => {
if (this.mounted) {
this.setState((state: State) => ({
users: state.users && state.users.filter(user => user !== removedUser)
@@ -118,7 +119,7 @@ export default class ProfilePermissions extends React.PureComponent<Props, State
}
};
- handleGroupAdd = (addedGroup: T.Group) => {
+ handleGroupAdd = (addedGroup: Group) => {
if (this.mounted) {
this.setState((state: State) => ({
addUserForm: false,
@@ -127,7 +128,7 @@ export default class ProfilePermissions extends React.PureComponent<Props, State
}
};
- handleGroupDelete = (removedGroup: T.Group) => {
+ handleGroupDelete = (removedGroup: Group) => {
if (this.mounted) {
this.setState((state: State) => ({
groups: state.groups && state.groups.filter(group => group !== removedGroup)
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx
index 216aadd8f06..361bae1eccf 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsForm.tsx
@@ -28,18 +28,19 @@ import {
import { ResetButtonLink, SubmitButton } from '../../../components/controls/buttons';
import Modal from '../../../components/controls/Modal';
import { translate } from '../../../helpers/l10n';
+import { UserSelected } from '../../../types/types';
import { Group } from './ProfilePermissions';
import ProfilePermissionsFormSelect from './ProfilePermissionsFormSelect';
interface Props {
onClose: () => void;
onGroupAdd: (group: Group) => void;
- onUserAdd: (user: T.UserSelected) => void;
+ onUserAdd: (user: UserSelected) => void;
profile: { language: string; name: string };
}
interface State {
- selected?: T.UserSelected | Group;
+ selected?: UserSelected | Group;
submitting: boolean;
}
@@ -61,7 +62,7 @@ export default class ProfilePermissionsForm extends React.PureComponent<Props, S
}
};
- handleUserAdd = (user: T.UserSelected) => {
+ handleUserAdd = (user: UserSelected) => {
const {
profile: { language, name }
} = this.props;
@@ -88,8 +89,8 @@ export default class ProfilePermissionsForm extends React.PureComponent<Props, S
const { selected } = this.state;
if (selected) {
this.setState({ submitting: true });
- if ((selected as T.UserSelected).login !== undefined) {
- this.handleUserAdd(selected as T.UserSelected);
+ if ((selected as UserSelected).login !== undefined) {
+ this.handleUserAdd(selected as UserSelected);
} else {
this.handleGroupAdd(selected as Group);
}
@@ -113,7 +114,7 @@ export default class ProfilePermissionsForm extends React.PureComponent<Props, S
]);
};
- handleValueChange = (selected: T.UserSelected | Group) => {
+ handleValueChange = (selected: UserSelected | Group) => {
this.setState({ selected });
};
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx
index df95a313f11..08a848ce414 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsFormSelect.tsx
@@ -23,9 +23,10 @@ import SelectLegacy from '../../../components/controls/SelectLegacy';
import GroupIcon from '../../../components/icons/GroupIcon';
import Avatar from '../../../components/ui/Avatar';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { UserSelected } from '../../../types/types';
import { Group } from './ProfilePermissions';
-type Option = T.UserSelected | Group;
+type Option = UserSelected | Group;
type OptionWithValue = Option & { value: string };
interface Props {
@@ -112,8 +113,8 @@ export default class ProfilePermissionsFormSelect extends React.PureComponent<Pr
}
}
-function isUser(option: Option): option is T.UserSelected {
- return (option as T.UserSelected).login !== undefined;
+function isUser(option: Option): option is UserSelected {
+ return (option as UserSelected).login !== undefined;
}
function getStringValue(option: Option) {
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsUser.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsUser.tsx
index 899c3f906cf..0eb0d015887 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsUser.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfilePermissionsUser.tsx
@@ -24,11 +24,12 @@ import { DeleteButton, ResetButtonLink, SubmitButton } from '../../../components
import SimpleModal, { ChildrenProps } from '../../../components/controls/SimpleModal';
import Avatar from '../../../components/ui/Avatar';
import { translate } from '../../../helpers/l10n';
+import { UserSelected } from '../../../types/types';
interface Props {
- onDelete: (user: T.UserSelected) => void;
+ onDelete: (user: UserSelected) => void;
profile: { language: string; name: string };
- user: T.UserSelected;
+ user: UserSelected;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRules.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRules.tsx
index c1be69c17e7..bad314f084c 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRules.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRules.tsx
@@ -26,6 +26,7 @@ import { Button } from '../../../components/controls/buttons';
import Tooltip from '../../../components/controls/Tooltip';
import { translate } from '../../../helpers/l10n';
import { getRulesUrl } from '../../../helpers/urls';
+import { Dict } from '../../../types/types';
import { Profile } from '../types';
import ProfileRulesDeprecatedWarning from './ProfileRulesDeprecatedWarning';
import ProfileRulesRowOfType from './ProfileRulesRowOfType';
@@ -45,8 +46,8 @@ interface ByType {
interface State {
activatedTotal: number | null;
- activatedByType: T.Dict<ByType>;
- allByType: T.Dict<ByType>;
+ activatedByType: Dict<ByType>;
+ allByType: Dict<ByType>;
compareToSonarWay: { profile: string; profileName: string; missingRuleCount: number } | null;
total: number | null;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx
index 42d21ab29a2..d0ae297ef8d 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsForm-test.tsx
@@ -22,6 +22,7 @@ import * as React from 'react';
import { addGroup, addUser, searchGroups, searchUsers } from '../../../../api/quality-profiles';
import { mockGroup, mockUser } from '../../../../helpers/testMocks';
import { submit, waitAndUpdate } from '../../../../helpers/testUtils';
+import { UserSelected } from '../../../../types/types';
import ProfilePermissionsForm from '../ProfilePermissionsForm';
import ProfilePermissionsFormSelect from '../ProfilePermissionsFormSelect';
@@ -43,7 +44,7 @@ it('correctly adds users', async () => {
const onUserAdd = jest.fn();
const wrapper = shallowRender({ onUserAdd });
- const user: T.UserSelected = { ...mockUser(), name: 'John doe', active: true, selected: true };
+ const user: UserSelected = { ...mockUser(), name: 'John doe', active: true, selected: true };
wrapper.instance().handleValueChange(user);
expect(wrapper.find(ProfilePermissionsFormSelect).prop('selected')).toBe(user);
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx
index 7ba649fe3c3..57b11605b55 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/details/__tests__/ProfilePermissionsUser-test.tsx
@@ -21,6 +21,7 @@ import { shallow } from 'enzyme';
import * as React from 'react';
import { removeUser } from '../../../../api/quality-profiles';
import { click } from '../../../../helpers/testUtils';
+import { UserSelected } from '../../../../types/types';
import ProfilePermissionsUser from '../ProfilePermissionsUser';
jest.mock('../../../../api/quality-profiles', () => ({
@@ -28,7 +29,7 @@ jest.mock('../../../../api/quality-profiles', () => ({
}));
const profile = { language: 'js', name: 'Sonar way' };
-const user: T.UserSelected = { login: 'luke', name: 'Luke Skywalker', selected: true };
+const user: UserSelected = { login: 'luke', name: 'Luke Skywalker', selected: true };
beforeEach(() => {
jest.clearAllMocks();
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/home/EvolutionRules.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/home/EvolutionRules.tsx
index e22e81e2460..03c084b8498 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/home/EvolutionRules.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/home/EvolutionRules.tsx
@@ -25,17 +25,18 @@ import { toShortNotSoISOString } from '../../../helpers/dates';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
import { getRulesUrl } from '../../../helpers/urls';
+import { Dict, Rule, RuleActivation } from '../../../types/types';
const RULES_LIMIT = 10;
-function parseRules(rules: T.Rule[], actives?: T.Dict<T.RuleActivation[]>): ExtendedRule[] {
+function parseRules(rules: Rule[], actives?: Dict<RuleActivation[]>): ExtendedRule[] {
return rules.map(rule => {
const activations = actives && actives[rule.key];
return { ...rule, activations: activations ? activations.length : 0 };
});
}
-interface ExtendedRule extends T.Rule {
+interface ExtendedRule extends Rule {
activations: number;
}
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/home/ProfilesList.tsx b/server/sonar-web/src/main/js/apps/quality-profiles/home/ProfilesList.tsx
index c1256df0850..8e3e02902fa 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/home/ProfilesList.tsx
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/home/ProfilesList.tsx
@@ -23,12 +23,13 @@ import * as React from 'react';
import HelpTooltip from '../../../components/controls/HelpTooltip';
import { Alert } from '../../../components/ui/Alert';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Dict, Language } from '../../../types/types';
import { Profile } from '../types';
import ProfilesListHeader from './ProfilesListHeader';
import ProfilesListRow from './ProfilesListRow';
interface Props {
- languages: T.Language[];
+ languages: Language[];
location: Pick<Location, 'query'>;
profiles: Profile[];
updateProfiles: () => Promise<void>;
@@ -95,10 +96,7 @@ export default class ProfilesList extends React.PureComponent<Props> {
const { profiles, languages } = this.props;
const { language } = this.props.location.query;
- const profilesIndex: T.Dict<Profile[]> = groupBy<Profile>(
- profiles,
- profile => profile.language
- );
+ const profilesIndex: Dict<Profile[]> = groupBy<Profile>(profiles, profile => profile.language);
const profilesToShow = language ? pick(profilesIndex, language) : profilesIndex;
diff --git a/server/sonar-web/src/main/js/apps/quality-profiles/types.ts b/server/sonar-web/src/main/js/apps/quality-profiles/types.ts
index 03c64fcac44..6c6e9c17008 100644
--- a/server/sonar-web/src/main/js/apps/quality-profiles/types.ts
+++ b/server/sonar-web/src/main/js/apps/quality-profiles/types.ts
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { Profile as BaseProfile } from '../../api/quality-profiles';
+import { Dict } from '../../types/types';
export interface Profile extends BaseProfile {
depth: number;
@@ -34,7 +35,7 @@ export interface ProfileChangelogEvent {
action: string;
authorName: string;
date: string;
- params?: T.Dict<string | null>;
+ params?: Dict<string | null>;
ruleKey: string;
ruleName: string;
}
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsApp.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsApp.tsx
index 12a879b338e..4d6f1f2a08e 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsApp.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsApp.tsx
@@ -40,6 +40,7 @@ import {
HotspotStatusFilter,
RawHotspot
} from '../../types/security-hotspots';
+import { Component, CurrentUser, Dict } from '../../types/types';
import SecurityHotspotsAppRenderer from './SecurityHotspotsAppRenderer';
import './styles.css';
import { SECURITY_STANDARDS } from './utils';
@@ -52,8 +53,8 @@ interface DispatchProps {
interface OwnProps {
branchLike?: BranchLike;
- currentUser: T.CurrentUser;
- component: T.Component;
+ currentUser: CurrentUser;
+ component: Component;
location: Location;
router: Router;
}
@@ -270,7 +271,7 @@ export class SecurityHotspotsApp extends React.PureComponent<Props, State> {
}
if (filterByCategory || filterByCWE || filterByFile) {
- const hotspotFilters: T.Dict<string> = {};
+ const hotspotFilters: Dict<string> = {};
if (filterByCategory) {
hotspotFilters[filterByCategory.standard] = filterByCategory.category;
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsAppRenderer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsAppRenderer.tsx
index 8976984bdde..a9e353e1771 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsAppRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsAppRenderer.tsx
@@ -29,6 +29,7 @@ import { scrollToElement } from '../../helpers/scrolling';
import { BranchLike } from '../../types/branch-like';
import { SecurityStandard, Standards } from '../../types/security';
import { HotspotFilters, HotspotStatusFilter, RawHotspot } from '../../types/security-hotspots';
+import { Component, StandardSecurityCategories } from '../../types/types';
import EmptyHotspotsPage from './components/EmptyHotspotsPage';
import FilterBar from './components/FilterBar';
import HotspotList from './components/HotspotList';
@@ -38,7 +39,7 @@ import './styles.css';
export interface SecurityHotspotsAppRendererProps {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
filterByCategory?: {
standard: SecurityStandard;
category: string;
@@ -60,7 +61,7 @@ export interface SecurityHotspotsAppRendererProps {
onSwitchStatusFilter: (option: HotspotStatusFilter) => void;
onUpdateHotspot: (hotspotKey: string) => Promise<void>;
selectedHotspot: RawHotspot | undefined;
- securityCategories: T.StandardSecurityCategories;
+ securityCategories: StandardSecurityCategories;
standards: Standards;
}
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/__tests__/utils-test.ts b/server/sonar-web/src/main/js/apps/security-hotspots/__tests__/utils-test.ts
index 295b6bc6714..2f45f29a9da 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/__tests__/utils-test.ts
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/__tests__/utils-test.ts
@@ -27,6 +27,7 @@ import {
ReviewHistoryType,
RiskExposure
} from '../../../types/security-hotspots';
+import { IssueChangelog } from '../../../types/types';
import {
getHotspotReviewHistory,
getStatusAndResolutionFromStatusOption,
@@ -152,7 +153,7 @@ describe('mapRules', () => {
describe('getHotspotReviewHistory', () => {
it('should properly create the review history', () => {
- const changelogElement: T.IssueChangelog = {
+ const changelogElement: IssueChangelog = {
creationDate: '2018-10-01',
isUserActive: true,
user: 'me',
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/FilterBar.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/FilterBar.tsx
index ffbb0d81a72..9c5df620fc3 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/FilterBar.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/FilterBar.tsx
@@ -29,10 +29,11 @@ import { translate } from '../../../helpers/l10n';
import { isLoggedIn } from '../../../helpers/users';
import { ComponentQualifier } from '../../../types/component';
import { HotspotFilters, HotspotStatusFilter } from '../../../types/security-hotspots';
+import { Component, CurrentUser } from '../../../types/types';
export interface FilterBarProps {
- currentUser: T.CurrentUser;
- component: T.Component;
+ currentUser: CurrentUser;
+ component: Component;
filters: HotspotFilters;
hotspotsReviewedMeasure?: string;
isStaticListOfHotspots: boolean;
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotList.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotList.tsx
index 3f73800926e..25683e66923 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotList.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotList.tsx
@@ -25,6 +25,7 @@ import SecurityHotspotIcon from '../../../components/icons/SecurityHotspotIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { addSideBarClass, removeSideBarClass } from '../../../helpers/pages';
import { HotspotStatusFilter, RawHotspot, RiskExposure } from '../../../types/security-hotspots';
+import { Dict, StandardSecurityCategories } from '../../../types/types';
import { groupByCategory, RISK_EXPOSURE_LEVELS } from '../utils';
import HotspotCategory from './HotspotCategory';
import './HotspotList.css';
@@ -36,13 +37,13 @@ interface Props {
loadingMore: boolean;
onHotspotClick: (hotspot: RawHotspot) => void;
onLoadMore: () => void;
- securityCategories: T.StandardSecurityCategories;
+ securityCategories: StandardSecurityCategories;
selectedHotspot: RawHotspot;
statusFilter: HotspotStatusFilter;
}
interface State {
- expandedCategories: T.Dict<boolean>;
+ expandedCategories: Dict<boolean>;
groupedHotspots: Array<{
risk: RiskExposure;
categories: Array<{ key: string; hotspots: RawHotspot[]; title: string }>;
@@ -88,7 +89,7 @@ export default class HotspotList extends React.Component<Props, State> {
removeSideBarClass();
}
- groupHotspots = (hotspots: RawHotspot[], securityCategories: T.StandardSecurityCategories) => {
+ groupHotspots = (hotspots: RawHotspot[], securityCategories: StandardSecurityCategories) => {
const risks = groupBy(hotspots, h => h.vulnerabilityProbability);
return RISK_EXPOSURE_LEVELS.map(risk => ({
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotReviewHistoryAndComments.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotReviewHistoryAndComments.tsx
index b358850b3ca..cfac5a9fb5e 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotReviewHistoryAndComments.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotReviewHistoryAndComments.tsx
@@ -28,10 +28,11 @@ import { Button } from '../../../components/controls/buttons';
import { translate } from '../../../helpers/l10n';
import { isLoggedIn } from '../../../helpers/users';
import { Hotspot } from '../../../types/security-hotspots';
+import { CurrentUser } from '../../../types/types';
import HotspotReviewHistory from './HotspotReviewHistory';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
hotspot: Hotspot;
commentTextRef: React.RefObject<HTMLTextAreaElement>;
onCommentUpdate: () => void;
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainer.tsx
index c8fad003104..d438c65123d 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainer.tsx
@@ -24,12 +24,13 @@ import { getBranchLikeQuery } from '../../../helpers/branch-like';
import { BranchLike } from '../../../types/branch-like';
import { ComponentQualifier } from '../../../types/component';
import { Hotspot } from '../../../types/security-hotspots';
+import { Component, ExpandDirection, SourceLine } from '../../../types/types';
import { constructSourceViewerFile } from '../utils';
import HotspotSnippetContainerRenderer from './HotspotSnippetContainerRenderer';
interface Props {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
hotspot: Hotspot;
}
@@ -37,7 +38,7 @@ interface State {
highlightedSymbols: string[];
lastLine?: number;
loading: boolean;
- sourceLines: T.SourceLine[];
+ sourceLines: SourceLine[];
}
const BUFFER_LINES = 5;
@@ -66,7 +67,7 @@ export default class HotspotSnippetContainer extends React.Component<Props, Stat
this.mounted = false;
}
- checkLastLine(lines: T.SourceLine[], target: number): number | undefined {
+ checkLastLine(lines: SourceLine[], target: number): number | undefined {
if (lines.length < 1) {
return undefined;
}
@@ -100,7 +101,7 @@ export default class HotspotSnippetContainer extends React.Component<Props, Stat
from,
to,
...getBranchLikeQuery(branchLike)
- }).catch(() => [] as T.SourceLine[]);
+ }).catch(() => [] as SourceLine[]);
if (this.mounted) {
const lastLine = this.checkLastLine(sourceLines, to);
@@ -111,7 +112,7 @@ export default class HotspotSnippetContainer extends React.Component<Props, Stat
}
}
- handleExpansion = (direction: T.ExpandDirection) => {
+ handleExpansion = (direction: ExpandDirection) => {
const { branchLike, hotspot } = this.props;
const { sourceLines } = this.state;
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainerRenderer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainerRenderer.tsx
index 975abfb7dbf..176eb60a749 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainerRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainerRenderer.tsx
@@ -24,6 +24,12 @@ import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
import { BranchLike } from '../../../types/branch-like';
import { Hotspot } from '../../../types/security-hotspots';
+import {
+ ExpandDirection,
+ LinearIssueLocation,
+ SourceLine,
+ SourceViewerFile
+} from '../../../types/types';
import SnippetViewer from '../../issues/crossComponentSourceViewer/SnippetViewer';
export interface HotspotSnippetContainerRendererProps {
@@ -32,11 +38,11 @@ export interface HotspotSnippetContainerRendererProps {
highlightedSymbols: string[];
hotspot: Hotspot;
loading: boolean;
- locations: { [line: number]: T.LinearIssueLocation[] };
- onExpandBlock: (direction: T.ExpandDirection) => Promise<void>;
+ locations: { [line: number]: LinearIssueLocation[] };
+ onExpandBlock: (direction: ExpandDirection) => Promise<void>;
onSymbolClick: (symbols: string[]) => void;
- sourceLines: T.SourceLine[];
- sourceViewerFile: T.SourceViewerFile;
+ sourceLines: SourceLine[];
+ sourceViewerFile: SourceViewerFile;
}
const noop = () => undefined;
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewer.tsx
index 6751bb68ab7..d96a5a74a13 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewer.tsx
@@ -26,17 +26,18 @@ import {
HotspotStatusFilter,
HotspotStatusOption
} from '../../../types/security-hotspots';
+import { Component, StandardSecurityCategories } from '../../../types/types';
import { getStatusFilterFromStatusOption } from '../utils';
import HotspotViewerRenderer from './HotspotViewerRenderer';
interface Props {
branchLike?: BranchLike;
- component: T.Component;
+ component: Component;
hotspotKey: string;
hotspotsReviewedMeasure?: string;
onSwitchStatusFilter: (option: HotspotStatusFilter) => void;
onUpdateHotspot: (hotspotKey: string) => Promise<void>;
- securityCategories: T.StandardSecurityCategories;
+ securityCategories: StandardSecurityCategories;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewerRenderer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewerRenderer.tsx
index 8b0e0a1bf3c..ce30e9a574b 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewerRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewerRenderer.tsx
@@ -35,6 +35,7 @@ import {
import { isLoggedIn } from '../../../helpers/users';
import { BranchLike } from '../../../types/branch-like';
import { Hotspot, HotspotStatusOption } from '../../../types/security-hotspots';
+import { Component, CurrentUser, StandardSecurityCategories } from '../../../types/types';
import Assignee from './assignee/Assignee';
import HotspotOpenInIdeButton from './HotspotOpenInIdeButton';
import HotspotReviewHistoryAndComments from './HotspotReviewHistoryAndComments';
@@ -46,8 +47,8 @@ import StatusUpdateSuccessModal from './StatusUpdateSuccessModal';
export interface HotspotViewerRendererProps {
branchLike?: BranchLike;
- component: T.Component;
- currentUser: T.CurrentUser;
+ component: Component;
+ currentUser: CurrentUser;
hotspot?: Hotspot;
hotspotsReviewedMeasure?: string;
lastStatusChangedTo?: HotspotStatusOption;
@@ -58,7 +59,7 @@ export interface HotspotViewerRendererProps {
onShowCommentForm: () => void;
onSwitchFilterToStatusOfUpdatedHotspot: () => void;
showStatusUpdateSuccessModal: boolean;
- securityCategories: T.StandardSecurityCategories;
+ securityCategories: StandardSecurityCategories;
}
export function HotspotViewerRenderer(props: HotspotViewerRendererProps) {
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/Assignee.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/Assignee.tsx
index dbc6c822822..31f38449e4f 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/Assignee.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/Assignee.tsx
@@ -24,10 +24,11 @@ import { withCurrentUser } from '../../../../components/hoc/withCurrentUser';
import { translate, translateWithParameters } from '../../../../helpers/l10n';
import { isLoggedIn } from '../../../../helpers/users';
import { Hotspot, HotspotStatus } from '../../../../types/security-hotspots';
+import { CurrentUser, UserActive } from '../../../../types/types';
import AssigneeRenderer from './AssigneeRenderer';
interface Props {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
hotspot: Hotspot;
onAssigneeChange: () => void;
@@ -61,7 +62,7 @@ export class Assignee extends React.PureComponent<Props, State> {
this.setState({ editing: false });
};
- handleAssign = (newAssignee: T.UserActive) => {
+ handleAssign = (newAssignee: UserActive) => {
this.setState({ loading: true });
assignSecurityHotspot(this.props.hotspot.key, {
assignee: newAssignee?.login
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeRenderer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeRenderer.tsx
index 78235489ac5..fd9c476240f 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeRenderer.tsx
@@ -23,6 +23,7 @@ import EscKeydownHandler from '../../../../components/controls/EscKeydownHandler
import OutsideClickHandler from '../../../../components/controls/OutsideClickHandler';
import DeferredSpinner from '../../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../../helpers/l10n';
+import { LoggedInUser, UserActive, UserBase } from '../../../../types/types';
import AssigneeSelection from './AssigneeSelection';
export interface AssigneeRendererProps {
@@ -30,10 +31,10 @@ export interface AssigneeRendererProps {
editing: boolean;
loading: boolean;
- assignee?: T.UserBase;
- loggedInUser?: T.LoggedInUser;
+ assignee?: UserBase;
+ loggedInUser?: LoggedInUser;
- onAssign: (user: T.UserActive) => void;
+ onAssign: (user: UserActive) => void;
onEnterEditionMode: () => void;
onExitEditionMode: () => void;
}
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelection.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelection.tsx
index 4469a4d3d6b..7e46c9ca59c 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelection.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelection.tsx
@@ -23,22 +23,23 @@ import { searchUsers } from '../../../../api/users';
import { KeyboardCodes } from '../../../../helpers/keycodes';
import { translate } from '../../../../helpers/l10n';
import { isUserActive } from '../../../../helpers/users';
+import { LoggedInUser, UserActive } from '../../../../types/types';
import AssigneeSelectionRenderer from './AssigneeSelectionRenderer';
interface Props {
allowCurrentUserSelection: boolean;
- loggedInUser: T.LoggedInUser;
- onSelect: (user: T.UserActive) => void;
+ loggedInUser: LoggedInUser;
+ onSelect: (user: UserActive) => void;
}
interface State {
- highlighted?: T.UserActive;
+ highlighted?: UserActive;
loading: boolean;
query?: string;
- suggestedUsers: T.UserActive[];
+ suggestedUsers: UserActive[];
}
-const UNASSIGNED: T.UserActive = { login: '', name: translate('unassigned') };
+const UNASSIGNED: UserActive = { login: '', name: translate('unassigned') };
export default class AssigneeSelection extends React.PureComponent<Props, State> {
mounted = false;
@@ -92,7 +93,7 @@ export default class AssigneeSelection extends React.PureComponent<Props, State>
this.setState({
loading: false,
query,
- suggestedUsers: (result.users.filter(isUserActive) as T.UserActive[]).concat(UNASSIGNED)
+ suggestedUsers: (result.users.filter(isUserActive) as UserActive[]).concat(UNASSIGNED)
});
}
})
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelectionRenderer.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelectionRenderer.tsx
index a7add0ef13e..f958dcb6d94 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelectionRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/AssigneeSelectionRenderer.tsx
@@ -25,16 +25,17 @@ import Avatar from '../../../../components/ui/Avatar';
import DeferredSpinner from '../../../../components/ui/DeferredSpinner';
import { PopupPlacement } from '../../../../components/ui/popups';
import { translate } from '../../../../helpers/l10n';
+import { UserActive } from '../../../../types/types';
import './AssigneeSelection.css';
export interface HotspotAssigneeSelectRendererProps {
- highlighted?: T.UserActive;
+ highlighted?: UserActive;
loading: boolean;
onKeyDown: (event: React.KeyboardEvent) => void;
onSearch: (query: string) => void;
- onSelect: (user?: T.UserActive) => void;
+ onSelect: (user?: UserActive) => void;
query?: string;
- suggestedUsers?: T.UserActive[];
+ suggestedUsers?: UserActive[];
}
export default function AssigneeSelectionRenderer(props: HotspotAssigneeSelectRendererProps) {
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/Assignee-test.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/Assignee-test.tsx
index ce18db2a847..a882f9760cf 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/Assignee-test.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/Assignee-test.tsx
@@ -25,6 +25,7 @@ import { mockHotspot } from '../../../../../helpers/mocks/security-hotspots';
import { mockCurrentUser, mockUser } from '../../../../../helpers/testMocks';
import { waitAndUpdate } from '../../../../../helpers/testUtils';
import { HotspotStatus } from '../../../../../types/security-hotspots';
+import { UserActive } from '../../../../../types/types';
import { Assignee } from '../Assignee';
import AssigneeRenderer from '../AssigneeRenderer';
@@ -58,9 +59,9 @@ it('should handle edition event correctly', () => {
});
it.each([
- ['assign to user', mockUser() as T.UserActive],
- ['unassign', { login: '', name: 'unassigned' } as T.UserActive]
-])('should handle %s event', async (_, user: T.UserActive) => {
+ ['assign to user', mockUser() as UserActive],
+ ['unassign', { login: '', name: 'unassigned' } as UserActive]
+])('should handle %s event', async (_, user: UserActive) => {
const hotspot = mockHotspot();
const onAssigneeChange = jest.fn();
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeRenderer-test.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeRenderer-test.tsx
index 7d5e5140cc6..7766cbb21b4 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeRenderer-test.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeRenderer-test.tsx
@@ -23,6 +23,7 @@ import { EditButton } from '../../../../../components/controls/buttons';
import OutsideClickHandler from '../../../../../components/controls/OutsideClickHandler';
import { mockLoggedInUser, mockUser } from '../../../../../helpers/testMocks';
import { click } from '../../../../../helpers/testUtils';
+import { UserActive } from '../../../../../types/types';
import AssigneeRenderer, { AssigneeRendererProps } from '../AssigneeRenderer';
import AssigneeSelection from '../AssigneeSelection';
@@ -57,7 +58,7 @@ it('should propagate calls correctly', () => {
wrapper
.find(AssigneeSelection)
.props()
- .onSelect(newAssignee as T.UserActive);
+ .onSelect(newAssignee as UserActive);
expect(onAssign).toHaveBeenCalledWith(newAssignee);
wrapper
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelection-test.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelection-test.tsx
index 73fa3302350..5b200d3c85f 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelection-test.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelection-test.tsx
@@ -23,6 +23,7 @@ import { searchUsers } from '../../../../../api/users';
import { KeyboardCodes } from '../../../../../helpers/keycodes';
import { mockLoggedInUser, mockUser } from '../../../../../helpers/testMocks';
import { waitAndUpdate } from '../../../../../helpers/testUtils';
+import { UserActive } from '../../../../../types/types';
import AssigneeSelection from '../AssigneeSelection';
jest.mock('../../../../../api/users', () => ({
@@ -36,9 +37,9 @@ it('should render correctly', () => {
it('should handle keydown', () => {
const mockEvent = (code: KeyboardCodes) => ({ preventDefault: jest.fn(), nativeEvent: { code } });
const suggestedUsers = [
- mockUser({ login: '1' }) as T.UserActive,
- mockUser({ login: '2' }) as T.UserActive,
- mockUser({ login: '3' }) as T.UserActive
+ mockUser({ login: '1' }) as UserActive,
+ mockUser({ login: '2' }) as UserActive,
+ mockUser({ login: '3' }) as UserActive
];
const onSelect = jest.fn();
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelectionRenderer-test.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelectionRenderer-test.tsx
index e0694d8ef2b..a4a49944f80 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelectionRenderer-test.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/assignee/__tests__/AssigneeSelectionRenderer-test.tsx
@@ -20,6 +20,7 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { mockUser } from '../../../../../helpers/testMocks';
+import { UserActive } from '../../../../../types/types';
import AssigneeSelectionRenderer, {
HotspotAssigneeSelectRendererProps
} from '../AssigneeSelectionRenderer';
@@ -28,17 +29,17 @@ it('should render correctly', () => {
expect(shallowRender()).toMatchSnapshot();
expect(shallowRender({ loading: true })).toMatchSnapshot('loading');
- const highlightedUser = mockUser({ login: 'highlighted' }) as T.UserActive;
+ const highlightedUser = mockUser({ login: 'highlighted' }) as UserActive;
expect(
shallowRender({
highlighted: highlightedUser,
- suggestedUsers: [mockUser() as T.UserActive, highlightedUser]
+ suggestedUsers: [mockUser() as UserActive, highlightedUser]
})
).toMatchSnapshot('open with results');
});
it('should call onSelect when clicked', () => {
- const user = mockUser() as T.UserActive;
+ const user = mockUser() as UserActive;
const onSelect = jest.fn();
const wrapper = shallowRender({
onSelect,
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/components/status/Status.tsx b/server/sonar-web/src/main/js/apps/security-hotspots/components/status/Status.tsx
index 689eb93c302..918fd20945a 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/components/status/Status.tsx
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/components/status/Status.tsx
@@ -29,12 +29,13 @@ import { PopupPlacement } from '../../../../components/ui/popups';
import { translate } from '../../../../helpers/l10n';
import { isLoggedIn } from '../../../../helpers/users';
import { Hotspot, HotspotStatusOption } from '../../../../types/security-hotspots';
+import { CurrentUser } from '../../../../types/types';
import { getStatusOptionFromStatusAndResolution } from '../../utils';
import StatusDescription from './StatusDescription';
import StatusSelection from './StatusSelection';
export interface StatusProps {
- currentUser: T.CurrentUser;
+ currentUser: CurrentUser;
hotspot: Hotspot;
onStatusChange: (statusOption: HotspotStatusOption) => Promise<void>;
diff --git a/server/sonar-web/src/main/js/apps/security-hotspots/utils.ts b/server/sonar-web/src/main/js/apps/security-hotspots/utils.ts
index ecde73f591e..86f7536c134 100644
--- a/server/sonar-web/src/main/js/apps/security-hotspots/utils.ts
+++ b/server/sonar-web/src/main/js/apps/security-hotspots/utils.ts
@@ -36,6 +36,7 @@ import {
ReviewHistoryType,
RiskExposure
} from '../../types/security-hotspots';
+import { Dict, SourceViewerFile, StandardSecurityCategories } from '../../types/types';
export const RISK_EXPOSURE_LEVELS = [RiskExposure.HIGH, RiskExposure.MEDIUM, RiskExposure.LOW];
export const SECURITY_STANDARDS = [
@@ -52,8 +53,8 @@ export const SECURITY_STANDARD_RENDERER = {
[SecurityStandard.CWE]: renderCWECategory
};
-export function mapRules(rules: Array<{ key: string; name: string }>): T.Dict<string> {
- return rules.reduce((ruleMap: T.Dict<string>, r) => {
+export function mapRules(rules: Array<{ key: string; name: string }>): Dict<string> {
+ return rules.reduce((ruleMap: Dict<string>, r) => {
ruleMap[r.key] = r.name;
return ruleMap;
}, {});
@@ -61,7 +62,7 @@ export function mapRules(rules: Array<{ key: string; name: string }>): T.Dict<st
export function groupByCategory(
hotspots: RawHotspot[] = [],
- securityCategories: T.StandardSecurityCategories
+ securityCategories: StandardSecurityCategories
) {
const groups = groupBy(hotspots, h => h.securityCategory);
@@ -72,10 +73,7 @@ export function groupByCategory(
}));
}
-export function sortHotspots(
- hotspots: RawHotspot[],
- securityCategories: T.Dict<{ title: string }>
-) {
+export function sortHotspots(hotspots: RawHotspot[], securityCategories: Dict<{ title: string }>) {
return sortBy(hotspots, [
h => RISK_EXPOSURE_LEVELS.indexOf(h.vulnerabilityProbability),
h => getCategoryTitle(h.securityCategory, securityCategories),
@@ -83,14 +81,14 @@ export function sortHotspots(
]);
}
-function getCategoryTitle(key: string, securityCategories: T.StandardSecurityCategories) {
+function getCategoryTitle(key: string, securityCategories: StandardSecurityCategories) {
return securityCategories[key] ? securityCategories[key].title : key;
}
export function constructSourceViewerFile(
{ component, project }: Hotspot,
lines?: number
-): T.SourceViewerFile {
+): SourceViewerFile {
return {
key: component.key,
measures: { lines: lines ? lines.toString() : undefined },
diff --git a/server/sonar-web/src/main/js/apps/sessions/components/Login.tsx b/server/sonar-web/src/main/js/apps/sessions/components/Login.tsx
index 2658732ff13..d2153b4f832 100644
--- a/server/sonar-web/src/main/js/apps/sessions/components/Login.tsx
+++ b/server/sonar-web/src/main/js/apps/sessions/components/Login.tsx
@@ -23,6 +23,7 @@ import GlobalMessagesContainer from '../../../app/components/GlobalMessagesConta
import { Alert } from '../../../components/ui/Alert';
import { translate } from '../../../helpers/l10n';
import { Store } from '../../../store/rootReducer';
+import { IdentityProvider } from '../../../types/types';
import './Login.css';
import LoginForm from './LoginForm';
import OAuthProviders from './OAuthProviders';
@@ -30,7 +31,7 @@ import OAuthProviders from './OAuthProviders';
export interface LoginProps {
authorizationError?: boolean;
authenticationError?: boolean;
- identityProviders: T.IdentityProvider[];
+ identityProviders: IdentityProvider[];
onSubmit: (login: string, password: string) => Promise<void>;
returnTo: string;
}
diff --git a/server/sonar-web/src/main/js/apps/sessions/components/LoginContainer.tsx b/server/sonar-web/src/main/js/apps/sessions/components/LoginContainer.tsx
index f30ee82f972..eb9ad108f79 100644
--- a/server/sonar-web/src/main/js/apps/sessions/components/LoginContainer.tsx
+++ b/server/sonar-web/src/main/js/apps/sessions/components/LoginContainer.tsx
@@ -23,6 +23,7 @@ import { connect } from 'react-redux';
import { getIdentityProviders } from '../../../api/users';
import { getReturnUrl } from '../../../helpers/urls';
import { doLogin } from '../../../store/rootActions';
+import { IdentityProvider } from '../../../types/types';
import Login from './Login';
interface OwnProps {
@@ -38,7 +39,7 @@ interface DispatchToProps {
type Props = OwnProps & DispatchToProps;
interface State {
- identityProviders?: T.IdentityProvider[];
+ identityProviders?: IdentityProvider[];
}
export class LoginContainer extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/sessions/components/OAuthProviders.tsx b/server/sonar-web/src/main/js/apps/sessions/components/OAuthProviders.tsx
index 59724f58607..566e6af463e 100644
--- a/server/sonar-web/src/main/js/apps/sessions/components/OAuthProviders.tsx
+++ b/server/sonar-web/src/main/js/apps/sessions/components/OAuthProviders.tsx
@@ -24,12 +24,13 @@ import HelpTooltip from '../../../components/controls/HelpTooltip';
import IdentityProviderLink from '../../../components/controls/IdentityProviderLink';
import { translateWithParameters } from '../../../helpers/l10n';
import { getBaseUrl } from '../../../helpers/system';
+import { IdentityProvider } from '../../../types/types';
import './OAuthProviders.css';
interface Props {
className?: string;
formatLabel?: (name: string) => React.ReactNode;
- identityProviders: T.IdentityProvider[];
+ identityProviders: IdentityProvider[];
returnTo: string;
}
@@ -51,7 +52,7 @@ export default function OAuthProviders(props: Props) {
interface ItemProps {
format: (name: string) => React.ReactNode;
- identityProvider: T.IdentityProvider;
+ identityProvider: IdentityProvider;
returnTo: string;
}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/AdditionalCategories.tsx b/server/sonar-web/src/main/js/apps/settings/components/AdditionalCategories.tsx
index aa946fabeae..bcb0db78471 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/AdditionalCategories.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/AdditionalCategories.tsx
@@ -19,6 +19,7 @@
*/
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { Component } from '../../../types/types';
import {
ALM_INTEGRATION,
ANALYSIS_SCOPE_CATEGORY,
@@ -33,7 +34,7 @@ import NewCodePeriod from './NewCodePeriod';
import PullRequestDecorationBinding from './pullRequestDecorationBinding/PRDecorationBinding';
export interface AdditionalCategoryComponentProps {
- component: T.Component | undefined;
+ component: Component | undefined;
selectedCategory: string;
}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/AllCategoriesList.tsx b/server/sonar-web/src/main/js/apps/settings/components/AllCategoriesList.tsx
index 70d39c40770..88419881a33 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/AllCategoriesList.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/AllCategoriesList.tsx
@@ -24,6 +24,7 @@ import { connect } from 'react-redux';
import { IndexLink } from 'react-router';
import { getGlobalSettingsUrl, getProjectSettingsUrl } from '../../../helpers/urls';
import { getAppState, getSettingsAppAllCategories, Store } from '../../../store/rootReducer';
+import { Component } from '../../../types/types';
import { getCategoryName } from '../utils';
import { ADDITIONAL_CATEGORIES } from './AdditionalCategories';
import CATEGORY_OVERRIDES from './CategoryOverrides';
@@ -31,7 +32,7 @@ import CATEGORY_OVERRIDES from './CategoryOverrides';
export interface CategoriesListProps {
branchesEnabled?: boolean;
categories: string[];
- component?: T.Component;
+ component?: Component;
defaultCategory: string;
selectedCategory: string;
}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/CategoryDefinitionsList.tsx b/server/sonar-web/src/main/js/apps/settings/components/CategoryDefinitionsList.tsx
index f36d33c40d1..a0b789a0666 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/CategoryDefinitionsList.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/CategoryDefinitionsList.tsx
@@ -19,12 +19,13 @@
*/
import { connect } from 'react-redux';
import { getSettingsAppSettingsForCategory, Store } from '../../../store/rootReducer';
+import { Component } from '../../../types/types';
import { fetchValues } from '../store/actions';
import SubCategoryDefinitionsList from './SubCategoryDefinitionsList';
interface Props {
category: string;
- component?: T.Component;
+ component?: Component;
}
const mapStateToProps = (state: Store, ownProps: Props) => ({
diff --git a/server/sonar-web/src/main/js/apps/settings/components/CategoryOverrides.ts b/server/sonar-web/src/main/js/apps/settings/components/CategoryOverrides.ts
index 95d249719cb..f5e76d6f647 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/CategoryOverrides.ts
+++ b/server/sonar-web/src/main/js/apps/settings/components/CategoryOverrides.ts
@@ -17,9 +17,10 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+import { Dict } from '../../../types/types';
import { LANGUAGES_CATEGORY } from './AdditionalCategoryKeys';
-const CATEGORY_OVERRIDES: T.Dict<string> = {
+const CATEGORY_OVERRIDES: Dict<string> = {
abap: LANGUAGES_CATEGORY,
apex: LANGUAGES_CATEGORY,
'c / c++ / objective-c': LANGUAGES_CATEGORY,
diff --git a/server/sonar-web/src/main/js/apps/settings/components/Definition.tsx b/server/sonar-web/src/main/js/apps/settings/components/Definition.tsx
index 0bc426876f8..cdbdab94747 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/Definition.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/Definition.tsx
@@ -31,6 +31,7 @@ import {
Store
} from '../../../store/rootReducer';
import { Setting } from '../../../types/settings';
+import { Component } from '../../../types/types';
import { checkValue, resetValue, saveValue } from '../store/actions';
import { cancelChange, changeValue, passValidation } from '../store/settingsPage';
import {
@@ -47,7 +48,7 @@ interface Props {
changeValue: (key: string, value: any) => void;
changedValue: any;
checkValue: (key: string) => boolean;
- component?: T.Component;
+ component?: Component;
loading: boolean;
passValidation: (key: string) => void;
resetValue: (key: string, component?: string) => Promise<void>;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/DefinitionsList.tsx b/server/sonar-web/src/main/js/apps/settings/components/DefinitionsList.tsx
index 8f810e009f0..2824d1c41af 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/DefinitionsList.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/DefinitionsList.tsx
@@ -19,10 +19,11 @@
*/
import * as React from 'react';
import { Setting } from '../../../types/settings';
+import { Component } from '../../../types/types';
import Definition from './Definition';
interface Props {
- component?: T.Component;
+ component?: Component;
scrollToDefinition: (element: HTMLLIElement) => void;
settings: Setting[];
}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/EmailForm.tsx b/server/sonar-web/src/main/js/apps/settings/components/EmailForm.tsx
index 544a42df889..990a9f84e92 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/EmailForm.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/EmailForm.tsx
@@ -27,9 +27,10 @@ import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { parseError } from '../../../helpers/request';
+import { LoggedInUser } from '../../../types/types';
interface Props {
- currentUser: T.LoggedInUser;
+ currentUser: LoggedInUser;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/settings/components/NewCodePeriod.tsx b/server/sonar-web/src/main/js/apps/settings/components/NewCodePeriod.tsx
index ac5b327ae95..caf5fed3395 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/NewCodePeriod.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/NewCodePeriod.tsx
@@ -25,17 +25,18 @@ import { ResetButtonLink, SubmitButton } from '../../../components/controls/butt
import AlertSuccessIcon from '../../../components/icons/AlertSuccessIcon';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
+import { NewCodePeriodSettingType } from '../../../types/types';
import BaselineSettingDays from '../../projectBaseline/components/BaselineSettingDays';
import BaselineSettingPreviousVersion from '../../projectBaseline/components/BaselineSettingPreviousVersion';
import { validateDays } from '../../projectBaseline/utils';
interface State {
- currentSetting?: T.NewCodePeriodSettingType;
+ currentSetting?: NewCodePeriodSettingType;
days: string;
loading: boolean;
currentSettingValue?: string | number;
saving: boolean;
- selected?: T.NewCodePeriodSettingType;
+ selected?: NewCodePeriodSettingType;
success: boolean;
}
@@ -81,7 +82,7 @@ export default class NewCodePeriod extends React.PureComponent<{}, State> {
this.setState({ days, success: false });
};
- onSelectSetting = (selected: T.NewCodePeriodSettingType) => {
+ onSelectSetting = (selected: NewCodePeriodSettingType) => {
this.setState({ selected, success: false });
};
diff --git a/server/sonar-web/src/main/js/apps/settings/components/PageHeader.tsx b/server/sonar-web/src/main/js/apps/settings/components/PageHeader.tsx
index b18ad5646fb..b8f11a64b68 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/PageHeader.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/PageHeader.tsx
@@ -20,10 +20,11 @@
import * as React from 'react';
import InstanceMessage from '../../../components/common/InstanceMessage';
import { translate } from '../../../helpers/l10n';
+import { Component } from '../../../types/types';
import SettingsSearch from './SettingsSearch';
export interface PageHeaderProps {
- component?: T.Component;
+ component?: Component;
}
export default function PageHeader({ component }: PageHeaderProps) {
diff --git a/server/sonar-web/src/main/js/apps/settings/components/SettingsApp.tsx b/server/sonar-web/src/main/js/apps/settings/components/SettingsApp.tsx
index 5149787010a..e9875254569 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/SettingsApp.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/SettingsApp.tsx
@@ -32,6 +32,7 @@ import {
removeWhitePageClass
} from '../../../helpers/pages';
import { getSettingsAppDefaultCategory, Store } from '../../../store/rootReducer';
+import { Component } from '../../../types/types';
import { fetchSettings } from '../store/actions';
import '../styles.css';
import { ADDITIONAL_CATEGORIES } from './AdditionalCategories';
@@ -41,7 +42,7 @@ import CATEGORY_OVERRIDES from './CategoryOverrides';
import PageHeader from './PageHeader';
interface Props {
- component?: T.Component;
+ component?: Component;
defaultCategory: string;
fetchSettings(component?: string): Promise<void>;
}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/SettingsSearch.tsx b/server/sonar-web/src/main/js/apps/settings/components/SettingsSearch.tsx
index d868ed7ad30..3acbafbf1ca 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/SettingsSearch.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/SettingsSearch.tsx
@@ -26,6 +26,7 @@ import { withRouter } from '../../../components/hoc/withRouter';
import { KeyboardCodes } from '../../../helpers/keycodes';
import { getSettingsAppAllDefinitions, Store } from '../../../store/rootReducer';
import { SettingCategoryDefinition } from '../../../types/settings';
+import { Component, Dict } from '../../../types/types';
import {
ADDITIONAL_PROJECT_SETTING_DEFINITIONS,
ADDITIONAL_SETTING_DEFINITIONS,
@@ -35,7 +36,7 @@ import SettingsSearchRenderer from './SettingsSearchRenderer';
interface Props {
className?: string;
- component?: T.Component;
+ component?: Component;
definitions: SettingCategoryDefinition[];
router: InjectedRouter;
}
@@ -50,7 +51,7 @@ interface State {
const DEBOUNCE_DELAY = 250;
export class SettingsSearch extends React.Component<Props, State> {
- definitionsByKey: T.Dict<SettingCategoryDefinition>;
+ definitionsByKey: Dict<SettingCategoryDefinition>;
index: LunrIndex;
state: State = {
searchQuery: '',
diff --git a/server/sonar-web/src/main/js/apps/settings/components/SettingsSearchRenderer.tsx b/server/sonar-web/src/main/js/apps/settings/components/SettingsSearchRenderer.tsx
index f9d100058d3..ea2c8b29700 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/SettingsSearchRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/SettingsSearchRenderer.tsx
@@ -26,11 +26,12 @@ import SearchBox from '../../../components/controls/SearchBox';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { scrollToElement } from '../../../helpers/scrolling';
import { SettingCategoryDefinition } from '../../../types/settings';
+import { Component } from '../../../types/types';
import { buildSettingLink, isRealSettingKey } from '../utils';
export interface SettingsSearchRendererProps {
className?: string;
- component?: T.Component;
+ component?: Component;
results?: SettingCategoryDefinition[];
searchQuery: string;
selectedResult?: string;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/SubCategoryDefinitionsList.tsx b/server/sonar-web/src/main/js/apps/settings/components/SubCategoryDefinitionsList.tsx
index be3b88a7c78..36cbd7fa95c 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/SubCategoryDefinitionsList.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/SubCategoryDefinitionsList.tsx
@@ -23,13 +23,14 @@ import { Location, withRouter } from '../../../components/hoc/withRouter';
import { sanitizeStringRestricted } from '../../../helpers/sanitize';
import { scrollToElement } from '../../../helpers/scrolling';
import { SettingWithCategory } from '../../../types/settings';
+import { Component } from '../../../types/types';
import { getSubCategoryDescription, getSubCategoryName } from '../utils';
import DefinitionsList from './DefinitionsList';
import EmailForm from './EmailForm';
export interface SubCategoryDefinitionsListProps {
category: string;
- component?: T.Component;
+ component?: Component;
fetchValues: Function;
location: Location;
settings: Array<SettingWithCategory>;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegration.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegration.tsx
index 043efedf2df..1f8537cf92f 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegration.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegration.tsx
@@ -34,10 +34,11 @@ import {
AlmSettingsBindingStatus,
AlmSettingsBindingStatusType
} from '../../../../types/alm-settings';
+import { AppState, Dict } from '../../../../types/types';
import AlmIntegrationRenderer from './AlmIntegrationRenderer';
interface Props extends Pick<WithRouterProps, 'location' | 'router'> {
- appState: Pick<T.AppState, 'branchesEnabled' | 'multipleAlmEnabled'>;
+ appState: Pick<AppState, 'branchesEnabled' | 'multipleAlmEnabled'>;
}
export type AlmTabs = AlmKeys.Azure | AlmKeys.GitHub | AlmKeys.GitLab | AlmKeys.BitbucketServer;
@@ -46,7 +47,7 @@ interface State {
currentAlmTab: AlmTabs;
definitionKeyForDeletion?: string;
definitions: AlmSettingsBindingDefinitions;
- definitionStatus: T.Dict<AlmSettingsBindingStatus>;
+ definitionStatus: Dict<AlmSettingsBindingStatus>;
loadingAlmDefinitions: boolean;
loadingProjectCount: boolean;
projectCount?: number;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegrationRenderer.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegrationRenderer.tsx
index 04bd555a4be..6f34fbfd50e 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegrationRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegrationRenderer.tsx
@@ -26,6 +26,7 @@ import {
AlmSettingsBindingDefinitions,
AlmSettingsBindingStatus
} from '../../../../types/alm-settings';
+import { Dict } from '../../../../types/types';
import { AlmTabs } from './AlmIntegration';
import AlmTab from './AlmTab';
import DeleteModal from './DeleteModal';
@@ -35,7 +36,7 @@ export interface AlmIntegrationRendererProps {
currentAlmTab: AlmTabs;
definitionKeyForDeletion?: string;
definitions: AlmSettingsBindingDefinitions;
- definitionStatus: T.Dict<AlmSettingsBindingStatus>;
+ definitionStatus: Dict<AlmSettingsBindingStatus>;
loadingAlmDefinitions: boolean;
loadingProjectCount: boolean;
multipleAlmEnabled: boolean;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTab.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTab.tsx
index 1dd264c83b7..364ab25d34d 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTab.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTab.tsx
@@ -23,6 +23,7 @@ import {
AlmBindingDefinitionBase,
AlmSettingsBindingStatus
} from '../../../../types/alm-settings';
+import { Dict } from '../../../../types/types';
import { AlmTabs } from './AlmIntegration';
import AlmTabRenderer from './AlmTabRenderer';
@@ -30,7 +31,7 @@ interface Props {
almTab: AlmTabs;
branchesEnabled: boolean;
definitions: AlmBindingDefinition[];
- definitionStatus: T.Dict<AlmSettingsBindingStatus>;
+ definitionStatus: Dict<AlmSettingsBindingStatus>;
loadingAlmDefinitions: boolean;
loadingProjectCount: boolean;
multipleAlmEnabled: boolean;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTabRenderer.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTabRenderer.tsx
index 8712e292617..730133ef526 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTabRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTabRenderer.tsx
@@ -28,6 +28,7 @@ import {
AlmSettingsBindingStatus,
isBitbucketCloudBindingDefinition
} from '../../../../types/alm-settings';
+import { Dict } from '../../../../types/types';
import { ALM_INTEGRATION } from '../AdditionalCategoryKeys';
import CategoryDefinitionsList from '../CategoryDefinitionsList';
import AlmBindingDefinitionBox from './AlmBindingDefinitionBox';
@@ -38,7 +39,7 @@ import CreationTooltip from './CreationTooltip';
export interface AlmTabRendererProps {
almTab: AlmTabs;
branchesEnabled: boolean;
- definitionStatus: T.Dict<AlmSettingsBindingStatus>;
+ definitionStatus: Dict<AlmSettingsBindingStatus>;
editDefinition?: boolean;
editedDefinition?: AlmBindingDefinition;
definitions: AlmBindingDefinition[];
diff --git a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/CreationTooltip.tsx b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/CreationTooltip.tsx
index fc23742666c..87f93b38da3 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/almIntegration/CreationTooltip.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/almIntegration/CreationTooltip.tsx
@@ -25,10 +25,11 @@ import { getEdition, getEditionUrl } from '../../../../helpers/editions';
import { translate } from '../../../../helpers/l10n';
import { AlmKeys } from '../../../../types/alm-settings';
import { EditionKey } from '../../../../types/editions';
+import { AppState } from '../../../../types/types';
export interface CreationTooltipProps {
alm: AlmKeys;
- appState: T.AppState;
+ appState: AppState;
children: React.ReactElement<{}>;
preventCreation: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx
index ddd645f28a0..b46b54472e3 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx
@@ -31,11 +31,12 @@ import {
AlmSettingsInstance,
ProjectAlmBindingResponse
} from '../../../../types/alm-settings';
+import { Dict } from '../../../../types/types';
export interface AlmSpecificFormProps {
alm: AlmKeys;
instances: AlmSettingsInstance[];
- formData: T.Omit<ProjectAlmBindingResponse, 'alm'>;
+ formData: Omit<ProjectAlmBindingResponse, 'alm'>;
onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
monorepoEnabled: boolean;
}
@@ -47,7 +48,7 @@ interface LabelProps {
interface CommonFieldProps extends LabelProps {
help?: boolean;
- helpParams?: T.Dict<string | JSX.Element>;
+ helpParams?: Dict<string | JSX.Element>;
helpExample?: JSX.Element;
onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
propKey: keyof ProjectAlmBindingResponse;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
index 6a3271221c1..7cbc4b356fc 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
@@ -43,17 +43,18 @@ import {
} from '../../../../types/alm-settings';
import { EditionKey } from '../../../../types/editions';
import { Permissions } from '../../../../types/permissions';
+import { Component, CurrentUser } from '../../../../types/types';
import PRDecorationBindingRenderer from './PRDecorationBindingRenderer';
-type FormData = T.Omit<ProjectAlmBindingResponse, 'alm'>;
+type FormData = Omit<ProjectAlmBindingResponse, 'alm'>;
interface StateProps {
monorepoEnabled: boolean;
}
interface Props {
- component: T.Component;
- currentUser: T.CurrentUser;
+ component: Component;
+ currentUser: CurrentUser;
}
interface State {
@@ -71,7 +72,7 @@ interface State {
}
const REQUIRED_FIELDS_BY_ALM: {
- [almKey in AlmKeys]: Array<keyof T.Omit<FormData, 'key'>>;
+ [almKey in AlmKeys]: Array<keyof Omit<FormData, 'key'>>;
} = {
[AlmKeys.Azure]: ['repository', 'slug'],
[AlmKeys.BitbucketServer]: ['repository', 'slug'],
@@ -174,7 +175,7 @@ export class PRDecorationBinding extends React.PureComponent<Props & StateProps,
submitProjectAlmBinding(
alm: AlmKeys,
key: string,
- almSpecificFields?: T.Omit<FormData, 'key'>
+ almSpecificFields?: Omit<FormData, 'key'>
): Promise<void> {
const almSetting = key;
const project = this.props.component.key;
diff --git a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
index 352cc27c1d6..2a440c25b26 100644
--- a/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
+++ b/server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
@@ -39,7 +39,7 @@ import { ALM_INTEGRATION } from '../AdditionalCategoryKeys';
import AlmSpecificForm from './AlmSpecificForm';
export interface PRDecorationBindingRendererProps {
- formData: T.Omit<ProjectAlmBindingResponse, 'alm'>;
+ formData: Omit<ProjectAlmBindingResponse, 'alm'>;
instances: AlmSettingsInstance[];
isChanged: boolean;
isConfigured: boolean;
diff --git a/server/sonar-web/src/main/js/apps/settings/store/definitions.ts b/server/sonar-web/src/main/js/apps/settings/store/definitions.ts
index 8e1af16c1db..729640cfac4 100644
--- a/server/sonar-web/src/main/js/apps/settings/store/definitions.ts
+++ b/server/sonar-web/src/main/js/apps/settings/store/definitions.ts
@@ -20,6 +20,7 @@
import { keyBy, sortBy, uniqBy } from 'lodash';
import { ActionType } from '../../../store/utils/actions';
import { SettingCategoryDefinition } from '../../../types/settings';
+import { Dict } from '../../../types/types';
import { DEFAULT_CATEGORY, getCategoryName } from '../utils';
const enum Actions {
@@ -28,7 +29,7 @@ const enum Actions {
type Action = ActionType<typeof receiveDefinitions, Actions.ReceiveDefinitions>;
-export type State = T.Dict<SettingCategoryDefinition>;
+export type State = Dict<SettingCategoryDefinition>;
export function receiveDefinitions(definitions: SettingCategoryDefinition[]) {
return { type: Actions.ReceiveDefinitions, definitions };
diff --git a/server/sonar-web/src/main/js/apps/settings/store/settingsPage.ts b/server/sonar-web/src/main/js/apps/settings/store/settingsPage.ts
index 43797087936..045b7647f02 100644
--- a/server/sonar-web/src/main/js/apps/settings/store/settingsPage.ts
+++ b/server/sonar-web/src/main/js/apps/settings/store/settingsPage.ts
@@ -20,6 +20,7 @@
import { omit } from 'lodash';
import { combineReducers } from 'redux';
import { ActionType } from '../../../store/utils/actions';
+import { Dict } from '../../../types/types';
const enum Actions {
CancelChange = 'settingsPage/CANCEL_CHANGE',
@@ -39,9 +40,9 @@ type Action =
| ActionType<typeof stopLoading, Actions.StopLoading>;
export interface State {
- changedValues: T.Dict<any>;
- loading: T.Dict<boolean>;
- validationMessages: T.Dict<string>;
+ changedValues: Dict<any>;
+ loading: Dict<boolean>;
+ validationMessages: Dict<string>;
}
export function cancelChange(key: string) {
diff --git a/server/sonar-web/src/main/js/apps/settings/store/values.ts b/server/sonar-web/src/main/js/apps/settings/store/values.ts
index 1146d12b359..f421230d705 100644
--- a/server/sonar-web/src/main/js/apps/settings/store/values.ts
+++ b/server/sonar-web/src/main/js/apps/settings/store/values.ts
@@ -22,6 +22,7 @@ import { combineReducers } from 'redux';
import { Action as AppStateAction, Actions as AppStateActions } from '../../../store/appState';
import { ActionType } from '../../../store/utils/actions';
import { SettingValue } from '../../../types/settings';
+import { Dict } from '../../../types/types';
enum Actions {
receiveValues = 'RECEIVE_VALUES'
@@ -29,10 +30,10 @@ enum Actions {
type Action = ActionType<typeof receiveValues, Actions.receiveValues>;
-type SettingsState = T.Dict<SettingValue>;
+type SettingsState = Dict<SettingValue>;
export interface State {
- components: T.Dict<SettingsState>;
+ components: Dict<SettingsState>;
global: SettingsState;
}
diff --git a/server/sonar-web/src/main/js/apps/settings/utils.ts b/server/sonar-web/src/main/js/apps/settings/utils.ts
index dcb442a7570..ba23c0f1d08 100644
--- a/server/sonar-web/src/main/js/apps/settings/utils.ts
+++ b/server/sonar-web/src/main/js/apps/settings/utils.ts
@@ -22,6 +22,7 @@ import { hasMessage, translate } from '../../helpers/l10n';
import { getGlobalSettingsUrl, getProjectSettingsUrl } from '../../helpers/urls';
import { AlmKeys } from '../../types/alm-settings';
import { Setting, SettingCategoryDefinition, SettingDefinition } from '../../types/settings';
+import { Component, Dict } from '../../types/types';
export const DEFAULT_CATEGORY = 'general';
@@ -108,7 +109,7 @@ export function getEmptyValue(item: SettingDefinition | SettingCategoryDefinitio
}
if (item.type === 'PROPERTY_SET') {
- const value: T.Dict<string> = {};
+ const value: Dict<string> = {};
item.fields.forEach(field => (value[field.key] = getEmptyValue(field)));
return [value];
}
@@ -170,7 +171,7 @@ export function isRealSettingKey(key: string) {
export function buildSettingLink(
definition: SettingCategoryDefinition,
- component?: T.Component
+ component?: Component
): LocationDescriptor {
const { category, key } = definition;
@@ -181,7 +182,7 @@ export function buildSettingLink(
};
}
- const query: T.Dict<string> = {};
+ const query: Dict<string> = {};
if (key.startsWith('sonar.auth.gitlab')) {
query.alm = 'gitlab';
diff --git a/server/sonar-web/src/main/js/apps/system/__tests__/utils-test.ts b/server/sonar-web/src/main/js/apps/system/__tests__/utils-test.ts
index 3194894a6ab..accdb5de9b5 100644
--- a/server/sonar-web/src/main/js/apps/system/__tests__/utils-test.ts
+++ b/server/sonar-web/src/main/js/apps/system/__tests__/utils-test.ts
@@ -19,6 +19,7 @@
*/
import { mockClusterSysInfo, mockStandaloneSysInfo } from '../../../helpers/testMocks';
+import { SysInfoBase, SysInfoStandalone } from '../../../types/types';
import * as u from '../utils';
describe('parseQuery', () => {
@@ -68,7 +69,7 @@ describe('getSystemLogsLevel', () => {
})
)
).toBe('INFO');
- expect(u.getSystemLogsLevel({} as T.SysInfoStandalone)).toBe('INFO');
+ expect(u.getSystemLogsLevel({} as SysInfoStandalone)).toBe('INFO');
});
});
@@ -169,13 +170,13 @@ describe('getNodeName', () => {
describe('getHealthCauses', () => {
it('should return the correct information', () => {
- expect(u.getHealthCauses({ 'Health Causes': ['Foo'] } as T.SysInfoBase)).toEqual(['Foo']);
+ expect(u.getHealthCauses({ 'Health Causes': ['Foo'] } as SysInfoBase)).toEqual(['Foo']);
});
});
describe('getHealth', () => {
it('should return the correct information', () => {
- expect(u.getHealth({ Health: 'GREEN' } as T.SysInfoBase)).toEqual('GREEN');
+ expect(u.getHealth({ Health: 'GREEN' } as SysInfoBase)).toEqual('GREEN');
});
});
diff --git a/server/sonar-web/src/main/js/apps/system/components/App.tsx b/server/sonar-web/src/main/js/apps/system/components/App.tsx
index 7e5cdc02608..45532818e90 100644
--- a/server/sonar-web/src/main/js/apps/system/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/App.tsx
@@ -24,6 +24,7 @@ import { getSystemInfo } from '../../../api/system';
import Suggestions from '../../../app/components/embed-docs-modal/Suggestions';
import UpdateNotification from '../../../app/components/update-notification/UpdateNotification';
import { translate } from '../../../helpers/l10n';
+import { SysInfoCluster, SysInfoStandalone } from '../../../types/types';
import '../styles.css';
import {
getClusterVersion,
@@ -43,7 +44,7 @@ type Props = WithRouterProps;
interface State {
loading: boolean;
- sysInfoData?: T.SysInfoCluster | T.SysInfoStandalone;
+ sysInfoData?: SysInfoCluster | SysInfoStandalone;
}
export class App extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/system/components/ClusterSysInfos.tsx b/server/sonar-web/src/main/js/apps/system/components/ClusterSysInfos.tsx
index 28b52667d18..b1bdf0109a1 100644
--- a/server/sonar-web/src/main/js/apps/system/components/ClusterSysInfos.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/ClusterSysInfos.tsx
@@ -20,6 +20,7 @@
import { sortBy } from 'lodash';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { SysInfoAppNode, SysInfoCluster, SysInfoSearchNode } from '../../../types/types';
import {
getAppNodes,
getClusterMainCardSection,
@@ -33,7 +34,7 @@ import HealthCard from './info-items/HealthCard';
interface Props {
expandedCards: string[];
- sysInfoData: T.SysInfoCluster;
+ sysInfoData: SysInfoCluster;
toggleCard: (toggledCard: string) => void;
}
@@ -53,7 +54,7 @@ export default function ClusterSysInfos({ expandedCards, sysInfoData, toggleCard
<li className="note system-info-health-title">
{translate('system.application_nodes_title')}
</li>
- {sortBy(getAppNodes(sysInfoData), getNodeName).map((node: T.SysInfoAppNode) => (
+ {sortBy(getAppNodes(sysInfoData), getNodeName).map((node: SysInfoAppNode) => (
<HealthCard
health={getHealth(node)}
healthCauses={getHealthCauses(node)}
@@ -65,7 +66,7 @@ export default function ClusterSysInfos({ expandedCards, sysInfoData, toggleCard
/>
))}
<li className="note system-info-health-title">{translate('system.search_nodes_title')}</li>
- {sortBy(getSearchNodes(sysInfoData), getNodeName).map((node: T.SysInfoSearchNode) => (
+ {sortBy(getSearchNodes(sysInfoData), getNodeName).map((node: SysInfoSearchNode) => (
<HealthCard
key={getNodeName(node)}
name={getNodeName(node)}
diff --git a/server/sonar-web/src/main/js/apps/system/components/StandaloneSysInfos.tsx b/server/sonar-web/src/main/js/apps/system/components/StandaloneSysInfos.tsx
index 650d10fcde1..b39595cb16f 100644
--- a/server/sonar-web/src/main/js/apps/system/components/StandaloneSysInfos.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/StandaloneSysInfos.tsx
@@ -19,6 +19,7 @@
*/
import { map } from 'lodash';
import * as React from 'react';
+import { SysInfoStandalone } from '../../../types/types';
import {
getHealth,
getHealthCauses,
@@ -30,7 +31,7 @@ import HealthCard from './info-items/HealthCard';
interface Props {
expandedCards: string[];
- sysInfoData: T.SysInfoStandalone;
+ sysInfoData: SysInfoStandalone;
toggleCard: (toggledCard: string) => void;
}
diff --git a/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCard.tsx b/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCard.tsx
index 5c403aadf4f..175143c3f32 100644
--- a/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCard.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCard.tsx
@@ -22,18 +22,19 @@ import * as React from 'react';
import BoxedGroupAccordion from '../../../../components/controls/BoxedGroupAccordion';
import { Alert } from '../../../../components/ui/Alert';
import { translate } from '../../../../helpers/l10n';
+import { HealthType, SysInfoValueObject } from '../../../../types/types';
import { getLogsLevel, groupSections, LOGS_LEVELS } from '../../utils';
import HealthItem from './HealthItem';
import Section from './Section';
interface Props {
biggerHealth?: boolean;
- health?: T.HealthType;
+ health?: HealthType;
healthCauses?: string[];
onClick: (toggledCard: string) => void;
open: boolean;
name: string;
- sysInfoData: T.SysInfoValueObject;
+ sysInfoData: SysInfoValueObject;
}
export default function HealthCard({
diff --git a/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCauseItem.tsx b/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCauseItem.tsx
index f6022748fb5..56442b15ee8 100644
--- a/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCauseItem.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/info-items/HealthCauseItem.tsx
@@ -20,10 +20,11 @@
import classNames from 'classnames';
import * as React from 'react';
import { Alert } from '../../../../components/ui/Alert';
+import { HealthType } from '../../../../types/types';
interface Props {
className?: string;
- health: T.HealthType;
+ health: HealthType;
healthCause: string;
}
diff --git a/server/sonar-web/src/main/js/apps/system/components/info-items/HealthItem.tsx b/server/sonar-web/src/main/js/apps/system/components/info-items/HealthItem.tsx
index 3c9fa6acebd..70b0209aa80 100644
--- a/server/sonar-web/src/main/js/apps/system/components/info-items/HealthItem.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/info-items/HealthItem.tsx
@@ -22,13 +22,14 @@ import * as React from 'react';
import StatusIndicator from '../../../../components/common/StatusIndicator';
import Tooltip from '../../../../components/controls/Tooltip';
import { translateWithParameters } from '../../../../helpers/l10n';
+import { HealthType } from '../../../../types/types';
import HealthCauseItem from './HealthCauseItem';
interface Props {
biggerHealth?: boolean;
name?: string;
className?: string;
- health: T.HealthType;
+ health: HealthType;
healthCauses?: string[];
}
diff --git a/server/sonar-web/src/main/js/apps/system/components/info-items/Section.tsx b/server/sonar-web/src/main/js/apps/system/components/info-items/Section.tsx
index 34087dcf973..85a9a0c1895 100644
--- a/server/sonar-web/src/main/js/apps/system/components/info-items/Section.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/info-items/Section.tsx
@@ -19,11 +19,12 @@
*/
import { map } from 'lodash';
import * as React from 'react';
+import { SysInfoValueObject } from '../../../../types/types';
import SysInfoItem from './SysInfoItem';
interface Props {
name?: string;
- items: T.SysInfoValueObject;
+ items: SysInfoValueObject;
}
export default function Section({ name, items }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/system/components/info-items/SysInfoItem.tsx b/server/sonar-web/src/main/js/apps/system/components/info-items/SysInfoItem.tsx
index 4cd91ec7c53..aa299cc81da 100644
--- a/server/sonar-web/src/main/js/apps/system/components/info-items/SysInfoItem.tsx
+++ b/server/sonar-web/src/main/js/apps/system/components/info-items/SysInfoItem.tsx
@@ -20,17 +20,18 @@
import { map } from 'lodash';
import * as React from 'react';
import { translate } from '../../../../helpers/l10n';
+import { HealthType, SysInfoValue } from '../../../../types/types';
import { HEALTH_FIELD, STATE_FIELD } from '../../utils';
import HealthItem from './HealthItem';
export interface Props {
name: string;
- value: T.SysInfoValue;
+ value: SysInfoValue;
}
export default function SysInfoItem({ name, value }: Props) {
if (name === HEALTH_FIELD || name === STATE_FIELD) {
- return <HealthItem className="no-margin" health={value as T.HealthType} />;
+ return <HealthItem className="no-margin" health={value as HealthType} />;
}
if (value instanceof Array) {
return <code>{JSON.stringify(value)}</code>;
diff --git a/server/sonar-web/src/main/js/apps/system/utils.ts b/server/sonar-web/src/main/js/apps/system/utils.ts
index a9857503449..93978f0d9af 100644
--- a/server/sonar-web/src/main/js/apps/system/utils.ts
+++ b/server/sonar-web/src/main/js/apps/system/utils.ts
@@ -20,6 +20,17 @@
import { each, memoize, omit, omitBy, pickBy, sortBy } from 'lodash';
import { formatMeasure } from '../../helpers/measures';
import { cleanQuery, parseAsArray, parseAsString, serializeStringArray } from '../../helpers/query';
+import {
+ RawQuery,
+ SysInfoAppNode,
+ SysInfoBase,
+ SysInfoCluster,
+ SysInfoLogging,
+ SysInfoSearchNode,
+ SysInfoSection,
+ SysInfoStandalone,
+ SysInfoValueObject
+} from '../../types/types';
export interface Query {
expandedCards: string[];
@@ -51,7 +62,7 @@ export const VERSION_FIELD = 'Version';
export const WEB_LOGGING_FIELD = 'Web Logging';
export const WEB_PREFIX = 'Web';
-export function ignoreInfoFields(sysInfoObject: T.SysInfoValueObject) {
+export function ignoreInfoFields(sysInfoObject: SysInfoValueObject) {
return omit(sysInfoObject, [
ALMS_FIELD,
BUNDLED_FIELD,
@@ -65,15 +76,15 @@ export function ignoreInfoFields(sysInfoObject: T.SysInfoValueObject) {
]);
}
-export function getHealth(sysInfoObject: T.SysInfoBase) {
+export function getHealth(sysInfoObject: SysInfoBase) {
return sysInfoObject[HEALTH_FIELD];
}
-export function getHealthCauses(sysInfoObject: T.SysInfoBase) {
+export function getHealthCauses(sysInfoObject: SysInfoBase) {
return sysInfoObject[HEALTH_CAUSES_FIELD];
}
-export function getLogsLevel(sysInfoObject?: T.SysInfoValueObject): string {
+export function getLogsLevel(sysInfoObject?: SysInfoValueObject): string {
if (sysInfoObject !== undefined) {
if (isLogInfoBlock(sysInfoObject)) {
return sysInfoObject[LOGS_LEVEL_FIELD];
@@ -90,46 +101,44 @@ export function getLogsLevel(sysInfoObject?: T.SysInfoValueObject): string {
return DEFAULT_LOG_LEVEL;
}
-export function getAppNodes(sysInfoData: T.SysInfoCluster): T.SysInfoAppNode[] {
+export function getAppNodes(sysInfoData: SysInfoCluster): SysInfoAppNode[] {
return sysInfoData[APP_NODES_FIELD];
}
-export function getSearchNodes(sysInfoData: T.SysInfoCluster): T.SysInfoSearchNode[] {
+export function getSearchNodes(sysInfoData: SysInfoCluster): SysInfoSearchNode[] {
return sysInfoData[SEARCH_NODES_FIELD];
}
export function isCluster(
- sysInfoData: T.SysInfoCluster | T.SysInfoStandalone
-): sysInfoData is T.SysInfoCluster {
+ sysInfoData: SysInfoCluster | SysInfoStandalone
+): sysInfoData is SysInfoCluster {
return sysInfoData[SYSTEM_FIELD] && sysInfoData[SYSTEM_FIELD][HA_FIELD] === true;
}
-export function isLogInfoBlock(
- sysInfoObject: T.SysInfoValueObject
-): sysInfoObject is T.SysInfoLogging {
+export function isLogInfoBlock(sysInfoObject: SysInfoValueObject): sysInfoObject is SysInfoLogging {
return sysInfoObject[LOGS_LEVEL_FIELD] !== undefined;
}
export function hasLoggingInfo(
- sysInfoObject: T.SysInfoValueObject
-): sysInfoObject is T.SysInfoStandalone | T.SysInfoAppNode {
+ sysInfoObject: SysInfoValueObject
+): sysInfoObject is SysInfoStandalone | SysInfoAppNode {
return Boolean(sysInfoObject[WEB_LOGGING_FIELD] || sysInfoObject[CE_LOGGING_FIELD]);
}
-export function getServerId(sysInfoData: T.SysInfoCluster | T.SysInfoStandalone): string {
+export function getServerId(sysInfoData: SysInfoCluster | SysInfoStandalone): string {
return sysInfoData && sysInfoData[SYSTEM_FIELD][SERVER_ID_FIELD];
}
-export function getVersion(sysInfoData: T.SysInfoStandalone): string | undefined {
+export function getVersion(sysInfoData: SysInfoStandalone): string | undefined {
return sysInfoData && sysInfoData[SYSTEM_FIELD][VERSION_FIELD];
}
-export function getClusterVersion(sysInfoData: T.SysInfoCluster): string | undefined {
+export function getClusterVersion(sysInfoData: SysInfoCluster): string | undefined {
const appNodes = getAppNodes(sysInfoData);
return appNodes.length > 0 ? appNodes[0][SYSTEM_FIELD][VERSION_FIELD] : undefined;
}
-export function getSystemLogsLevel(sysInfoData: T.SysInfoCluster | T.SysInfoStandalone): string {
+export function getSystemLogsLevel(sysInfoData: SysInfoCluster | SysInfoStandalone): string {
if (isCluster(sysInfoData)) {
const logLevels = sortBy(getAppNodes(sysInfoData).map(getLogsLevel), logLevel =>
LOGS_LEVELS.indexOf(logLevel)
@@ -140,20 +149,20 @@ export function getSystemLogsLevel(sysInfoData: T.SysInfoCluster | T.SysInfoStan
}
}
-export function getNodeName(nodeInfo: T.SysInfoAppNode | T.SysInfoSearchNode): string {
+export function getNodeName(nodeInfo: SysInfoAppNode | SysInfoSearchNode): string {
return nodeInfo[NAME_FIELD];
}
-function getSystemData(sysInfoData: T.SysInfoBase): T.SysInfoValueObject {
- const statData: T.SysInfoValueObject = {};
- const statistics = sysInfoData[STATS_FIELD] as T.SysInfoValueObject; // TODO
+function getSystemData(sysInfoData: SysInfoBase): SysInfoValueObject {
+ const statData: SysInfoValueObject = {};
+ const statistics = sysInfoData[STATS_FIELD] as SysInfoValueObject; // TODO
if (statistics) {
statData['Lines of Code'] = formatMeasure(statistics[NCLOC_FIELD] as number, 'INT');
}
return { ...sysInfoData[SYSTEM_FIELD], ...statData };
}
-export function getClusterMainCardSection(sysInfoData: T.SysInfoCluster): T.SysInfoValueObject {
+export function getClusterMainCardSection(sysInfoData: SysInfoCluster): SysInfoValueObject {
return {
...getSystemData(sysInfoData),
...omit(sysInfoData, [
@@ -167,7 +176,7 @@ export function getClusterMainCardSection(sysInfoData: T.SysInfoCluster): T.SysI
};
}
-export function getStandaloneMainSections(sysInfoData: T.SysInfoBase): T.SysInfoValueObject {
+export function getStandaloneMainSections(sysInfoData: SysInfoBase): SysInfoValueObject {
return {
...getSystemData(sysInfoData),
...(omitBy(
@@ -178,19 +187,19 @@ export function getStandaloneMainSections(sysInfoData: T.SysInfoBase): T.SysInfo
key.startsWith(CE_FIELD_PREFIX) ||
key.startsWith(SEARCH_PREFIX) ||
key.startsWith(WEB_PREFIX)
- ) as T.SysInfoValueObject)
+ ) as SysInfoValueObject)
};
}
-export function getStandaloneSecondarySections(sysInfoData: T.SysInfoBase): T.SysInfoSection {
+export function getStandaloneSecondarySections(sysInfoData: SysInfoBase): SysInfoSection {
return {
- Web: pickBy(sysInfoData, (_, key) => key.startsWith(WEB_PREFIX)) as T.SysInfoValueObject,
+ Web: pickBy(sysInfoData, (_, key) => key.startsWith(WEB_PREFIX)) as SysInfoValueObject,
'Compute Engine': pickBy(sysInfoData, (_, key) =>
key.startsWith(CE_FIELD_PREFIX)
- ) as T.SysInfoValueObject,
+ ) as SysInfoValueObject,
'Search Engine': pickBy(sysInfoData, (_, key) =>
key.startsWith(SEARCH_PREFIX)
- ) as T.SysInfoValueObject
+ ) as SysInfoValueObject
};
}
@@ -203,9 +212,9 @@ export function getFileNameSuffix(suffix?: string) {
);
}
-export function groupSections(sysInfoData: T.SysInfoValueObject) {
- const mainSection: T.SysInfoValueObject = {};
- const sections: T.SysInfoSection = {};
+export function groupSections(sysInfoData: SysInfoValueObject) {
+ const mainSection: SysInfoValueObject = {};
+ const sections: SysInfoSection = {};
each(sysInfoData, (item, key) => {
if (typeof item !== 'object' || item instanceof Array) {
mainSection[key] = item;
@@ -217,13 +226,13 @@ export function groupSections(sysInfoData: T.SysInfoValueObject) {
}
export const parseQuery = memoize(
- (urlQuery: T.RawQuery): Query => ({
+ (urlQuery: RawQuery): Query => ({
expandedCards: parseAsArray(urlQuery.expand, parseAsString)
})
);
export const serializeQuery = memoize(
- (query: Query): T.RawQuery =>
+ (query: Query): RawQuery =>
cleanQuery({
expand: serializeStringArray(query.expandedCards)
})
diff --git a/server/sonar-web/src/main/js/apps/tutorials/components/TutorialsApp.tsx b/server/sonar-web/src/main/js/apps/tutorials/components/TutorialsApp.tsx
index 15e0ed88dae..56fca606181 100644
--- a/server/sonar-web/src/main/js/apps/tutorials/components/TutorialsApp.tsx
+++ b/server/sonar-web/src/main/js/apps/tutorials/components/TutorialsApp.tsx
@@ -23,10 +23,11 @@ import TutorialSelection from '../../../components/tutorials/TutorialSelection';
import handleRequiredAuthentication from '../../../helpers/handleRequiredAuthentication';
import { isLoggedIn } from '../../../helpers/users';
import { ProjectAlmBindingResponse } from '../../../types/alm-settings';
+import { Component, CurrentUser } from '../../../types/types';
export interface TutorialsAppProps {
- component: T.Component;
- currentUser: T.CurrentUser;
+ component: Component;
+ currentUser: CurrentUser;
projectBinding?: ProjectAlmBindingResponse;
}
diff --git a/server/sonar-web/src/main/js/apps/users/UsersApp.tsx b/server/sonar-web/src/main/js/apps/users/UsersApp.tsx
index 83b6c6d1f31..8c7ee82c99c 100644
--- a/server/sonar-web/src/main/js/apps/users/UsersApp.tsx
+++ b/server/sonar-web/src/main/js/apps/users/UsersApp.tsx
@@ -25,6 +25,7 @@ import ListFooter from '../../components/controls/ListFooter';
import { withCurrentUser } from '../../components/hoc/withCurrentUser';
import { Location, Router, withRouter } from '../../components/hoc/withRouter';
import { translate } from '../../helpers/l10n';
+import { IdentityProvider, Paging, User } from '../../types/types';
import Header from './Header';
import Search from './Search';
import UsersList from './UsersList';
@@ -37,10 +38,10 @@ interface Props {
}
interface State {
- identityProviders: T.IdentityProvider[];
+ identityProviders: IdentityProvider[];
loading: boolean;
- paging?: T.Paging;
- users: T.User[];
+ paging?: Paging;
+ users: User[];
}
export class UsersApp extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/users/UsersList.tsx b/server/sonar-web/src/main/js/apps/users/UsersList.tsx
index a12eb00d3ea..ce4d76e9f06 100644
--- a/server/sonar-web/src/main/js/apps/users/UsersList.tsx
+++ b/server/sonar-web/src/main/js/apps/users/UsersList.tsx
@@ -19,14 +19,15 @@
*/
import * as React from 'react';
import { translate } from '../../helpers/l10n';
+import { IdentityProvider, User } from '../../types/types';
import UserListItem from './components/UserListItem';
interface Props {
currentUser: { isLoggedIn: boolean; login?: string };
- identityProviders: T.IdentityProvider[];
+ identityProviders: IdentityProvider[];
onUpdateUsers: () => void;
updateTokensCount: (login: string, tokensCount: number) => void;
- users: T.User[];
+ users: User[];
}
export default function UsersList({
diff --git a/server/sonar-web/src/main/js/apps/users/components/DeactivateForm.tsx b/server/sonar-web/src/main/js/apps/users/components/DeactivateForm.tsx
index ff9cac6acd6..186ab9240ad 100644
--- a/server/sonar-web/src/main/js/apps/users/components/DeactivateForm.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/DeactivateForm.tsx
@@ -22,11 +22,12 @@ import { deactivateUser } from '../../../api/users';
import { ResetButtonLink, SubmitButton } from '../../../components/controls/buttons';
import Modal from '../../../components/controls/Modal';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { UserActive } from '../../../types/types';
export interface Props {
onClose: () => void;
onUpdateUsers: () => void;
- user: T.UserActive;
+ user: UserActive;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/GroupsForm.tsx b/server/sonar-web/src/main/js/apps/users/components/GroupsForm.tsx
index a61d96e1ae0..0a5eeca46a6 100644
--- a/server/sonar-web/src/main/js/apps/users/components/GroupsForm.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/GroupsForm.tsx
@@ -27,11 +27,12 @@ import SelectList, {
SelectListSearchParams
} from '../../../components/controls/SelectList';
import { translate } from '../../../helpers/l10n';
+import { User } from '../../../types/types';
interface Props {
onClose: () => void;
onUpdateUsers: () => void;
- user: T.User;
+ user: User;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/PasswordForm.tsx b/server/sonar-web/src/main/js/apps/users/components/PasswordForm.tsx
index 6dd4d5adbcd..d428a60162b 100644
--- a/server/sonar-web/src/main/js/apps/users/components/PasswordForm.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/PasswordForm.tsx
@@ -28,11 +28,12 @@ import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
import { parseError } from '../../../helpers/request';
+import { User } from '../../../types/types';
interface Props {
isCurrentUser: boolean;
onClose: () => void;
- user: T.User;
+ user: User;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx b/server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx
index 4f4ce1b6dfb..c9a72b57ae6 100644
--- a/server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx
@@ -22,6 +22,7 @@ import { generateToken, getTokens } from '../../../api/user-tokens';
import { SubmitButton } from '../../../components/controls/buttons';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
+import { UserToken } from '../../../types/types';
import TokensFormItem, { TokenDeleteConfirmation } from './TokensFormItem';
import TokensFormNewToken from './TokensFormNewToken';
@@ -36,7 +37,7 @@ interface State {
loading: boolean;
newToken?: { name: string; token: string };
newTokenName: string;
- tokens: T.UserToken[];
+ tokens: UserToken[];
}
export default class TokensForm extends React.PureComponent<Props, State> {
@@ -104,7 +105,7 @@ export default class TokensForm extends React.PureComponent<Props, State> {
}
};
- handleRevokeToken = (revokedToken: T.UserToken) => {
+ handleRevokeToken = (revokedToken: UserToken) => {
this.setState(
state => ({
tokens: state.tokens.filter(token => token.name !== revokedToken.name)
diff --git a/server/sonar-web/src/main/js/apps/users/components/TokensFormItem.tsx b/server/sonar-web/src/main/js/apps/users/components/TokensFormItem.tsx
index 4c8fc26c29f..3cd5689bb39 100644
--- a/server/sonar-web/src/main/js/apps/users/components/TokensFormItem.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/TokensFormItem.tsx
@@ -28,14 +28,15 @@ import DateFromNow from '../../../components/intl/DateFromNow';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate } from '../../../helpers/l10n';
import { limitComponentName } from '../../../helpers/path';
+import { UserToken } from '../../../types/types';
export type TokenDeleteConfirmation = 'inline' | 'modal';
interface Props {
deleteConfirmation: TokenDeleteConfirmation;
login: string;
- onRevokeToken: (token: T.UserToken) => void;
- token: T.UserToken;
+ onRevokeToken: (token: UserToken) => void;
+ token: UserToken;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/TokensFormModal.tsx b/server/sonar-web/src/main/js/apps/users/components/TokensFormModal.tsx
index bb9e48a4feb..99f4b441f78 100644
--- a/server/sonar-web/src/main/js/apps/users/components/TokensFormModal.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/TokensFormModal.tsx
@@ -22,10 +22,11 @@ import { FormattedMessage } from 'react-intl';
import { ResetButtonLink } from '../../../components/controls/buttons';
import Modal from '../../../components/controls/Modal';
import { translate } from '../../../helpers/l10n';
+import { User } from '../../../types/types';
import TokensForm from './TokensForm';
interface Props {
- user: T.User;
+ user: User;
onClose: () => void;
updateTokensCount: (login: string, tokensCount: number) => void;
}
diff --git a/server/sonar-web/src/main/js/apps/users/components/UserActions.tsx b/server/sonar-web/src/main/js/apps/users/components/UserActions.tsx
index e58df4f9e09..a2db1575421 100644
--- a/server/sonar-web/src/main/js/apps/users/components/UserActions.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/UserActions.tsx
@@ -24,6 +24,7 @@ import ActionsDropdown, {
} from '../../../components/controls/ActionsDropdown';
import { translate } from '../../../helpers/l10n';
import { isUserActive } from '../../../helpers/users';
+import { User } from '../../../types/types';
import DeactivateForm from './DeactivateForm';
import PasswordForm from './PasswordForm';
import UserForm from './UserForm';
@@ -31,7 +32,7 @@ import UserForm from './UserForm';
interface Props {
isCurrentUser: boolean;
onUpdateUsers: () => void;
- user: T.User;
+ user: User;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/UserForm.tsx b/server/sonar-web/src/main/js/apps/users/components/UserForm.tsx
index 55193531878..34317250372 100644
--- a/server/sonar-web/src/main/js/apps/users/components/UserForm.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/UserForm.tsx
@@ -28,12 +28,13 @@ import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { parseError } from '../../../helpers/request';
+import { User } from '../../../types/types';
import UserScmAccountInput from './UserScmAccountInput';
export interface Props {
onClose: () => void;
onUpdateUsers: () => void;
- user?: T.User;
+ user?: User;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/UserGroups.tsx b/server/sonar-web/src/main/js/apps/users/components/UserGroups.tsx
index e525bdeb7fa..6c084e871a0 100644
--- a/server/sonar-web/src/main/js/apps/users/components/UserGroups.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/UserGroups.tsx
@@ -21,12 +21,13 @@ import * as React from 'react';
import { ButtonIcon } from '../../../components/controls/buttons';
import BulletListIcon from '../../../components/icons/BulletListIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { User } from '../../../types/types';
import GroupsForm from './GroupsForm';
interface Props {
groups: string[];
onUpdateUsers: () => void;
- user: T.User;
+ user: User;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/UserListItem.tsx b/server/sonar-web/src/main/js/apps/users/components/UserListItem.tsx
index dd728bf3f9c..596c7332a71 100644
--- a/server/sonar-web/src/main/js/apps/users/components/UserListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/UserListItem.tsx
@@ -23,6 +23,7 @@ import BulletListIcon from '../../../components/icons/BulletListIcon';
import DateFromNow from '../../../components/intl/DateFromNow';
import Avatar from '../../../components/ui/Avatar';
import { translate } from '../../../helpers/l10n';
+import { IdentityProvider, User } from '../../../types/types';
import TokensFormModal from './TokensFormModal';
import UserActions from './UserActions';
import UserGroups from './UserGroups';
@@ -30,11 +31,11 @@ import UserListItemIdentity from './UserListItemIdentity';
import UserScmAccounts from './UserScmAccounts';
interface Props {
- identityProvider?: T.IdentityProvider;
+ identityProvider?: IdentityProvider;
isCurrentUser: boolean;
onUpdateUsers: () => void;
updateTokensCount: (login: string, tokensCount: number) => void;
- user: T.User;
+ user: User;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/users/components/UserListItemIdentity.tsx b/server/sonar-web/src/main/js/apps/users/components/UserListItemIdentity.tsx
index 7ad86650cb6..a3408a5175f 100644
--- a/server/sonar-web/src/main/js/apps/users/components/UserListItemIdentity.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/UserListItemIdentity.tsx
@@ -21,10 +21,11 @@ import * as React from 'react';
import { colors } from '../../../app/theme';
import { getTextColor } from '../../../helpers/colors';
import { getBaseUrl } from '../../../helpers/system';
+import { IdentityProvider, User } from '../../../types/types';
export interface Props {
- identityProvider?: T.IdentityProvider;
- user: T.User;
+ identityProvider?: IdentityProvider;
+ user: User;
}
export default function UserListItemIdentity({ identityProvider, user }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/users/components/__tests__/TokensFormItem-test.tsx b/server/sonar-web/src/main/js/apps/users/components/__tests__/TokensFormItem-test.tsx
index 310642b9948..1b93097d0d7 100644
--- a/server/sonar-web/src/main/js/apps/users/components/__tests__/TokensFormItem-test.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/__tests__/TokensFormItem-test.tsx
@@ -21,6 +21,7 @@ import { shallow } from 'enzyme';
import * as React from 'react';
import { revokeToken } from '../../../../api/user-tokens';
import { click, waitAndUpdate } from '../../../../helpers/testUtils';
+import { UserToken } from '../../../../types/types';
import TokensFormItem from '../TokensFormItem';
jest.mock('../../../../components/intl/DateFormatter');
@@ -31,7 +32,7 @@ jest.mock('../../../../api/user-tokens', () => ({
revokeToken: jest.fn().mockResolvedValue(undefined)
}));
-const userToken: T.UserToken = {
+const userToken: UserToken = {
name: 'foo',
createdAt: '2019-01-15T15:06:33+0100',
lastConnectionDate: '2019-01-18T15:06:33+0100'
diff --git a/server/sonar-web/src/main/js/apps/users/components/__tests__/UserListItem-test.tsx b/server/sonar-web/src/main/js/apps/users/components/__tests__/UserListItem-test.tsx
index 742b4ff7a01..8cb2d13f360 100644
--- a/server/sonar-web/src/main/js/apps/users/components/__tests__/UserListItem-test.tsx
+++ b/server/sonar-web/src/main/js/apps/users/components/__tests__/UserListItem-test.tsx
@@ -20,12 +20,13 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { click } from '../../../../helpers/testUtils';
+import { User } from '../../../../types/types';
import UserListItem from '../UserListItem';
jest.mock('../../../../components/intl/DateFromNow');
jest.mock('../../../../components/intl/DateTimeFormatter');
-const user: T.User = {
+const user: User = {
active: true,
lastConnectionDate: '2019-01-18T15:06:33+0100',
local: false,
diff --git a/server/sonar-web/src/main/js/apps/users/utils.ts b/server/sonar-web/src/main/js/apps/users/utils.ts
index e5b1d89655b..ac6280ab292 100644
--- a/server/sonar-web/src/main/js/apps/users/utils.ts
+++ b/server/sonar-web/src/main/js/apps/users/utils.ts
@@ -19,19 +19,20 @@
*/
import { memoize } from 'lodash';
import { cleanQuery, parseAsString, serializeString } from '../../helpers/query';
+import { RawQuery } from '../../types/types';
export interface Query {
search: string;
}
export const parseQuery = memoize(
- (urlQuery: T.RawQuery): Query => ({
+ (urlQuery: RawQuery): Query => ({
search: parseAsString(urlQuery['search'])
})
);
export const serializeQuery = memoize(
- (query: Query): T.RawQuery =>
+ (query: Query): RawQuery =>
cleanQuery({
search: query.search ? serializeString(query.search) : undefined
})
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/Action.tsx b/server/sonar-web/src/main/js/apps/web-api/components/Action.tsx
index cda482e9f61..2777316dd1c 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/Action.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/Action.tsx
@@ -22,6 +22,7 @@ import * as React from 'react';
import { Link } from 'react-router';
import LinkIcon from '../../../components/icons/LinkIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { WebApi } from '../../../types/types';
import { getActionKey, serializeQuery } from '../utils';
import ActionChangelog from './ActionChangelog';
import DeprecatedBadge from './DeprecatedBadge';
@@ -30,8 +31,8 @@ import Params from './Params';
import ResponseExample from './ResponseExample';
interface Props {
- action: T.WebApi.Action;
- domain: T.WebApi.Domain;
+ action: WebApi.Action;
+ domain: WebApi.Domain;
showDeprecated: boolean;
showInternal: boolean;
}
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/ActionChangelog.tsx b/server/sonar-web/src/main/js/apps/web-api/components/ActionChangelog.tsx
index 856ccbef995..e7d8198cfcb 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/ActionChangelog.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/ActionChangelog.tsx
@@ -18,9 +18,10 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { WebApi } from '../../../types/types';
interface Props {
- changelog: T.WebApi.Changelog[];
+ changelog: WebApi.Changelog[];
}
export default function ActionChangelog({ changelog }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/Domain.tsx b/server/sonar-web/src/main/js/apps/web-api/components/Domain.tsx
index 47b72c9a46e..9be6638e723 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/Domain.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/Domain.tsx
@@ -18,13 +18,14 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { WebApi } from '../../../types/types';
import { actionsFilter, getActionKey, Query } from '../utils';
import Action from './Action';
import DeprecatedBadge from './DeprecatedBadge';
import InternalBadge from './InternalBadge';
interface Props {
- domain: T.WebApi.Domain;
+ domain: WebApi.Domain;
query: Query;
}
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/Menu.tsx b/server/sonar-web/src/main/js/apps/web-api/components/Menu.tsx
index c39bf9b2eb1..82fa81f2a9f 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/Menu.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/Menu.tsx
@@ -20,12 +20,13 @@
import classNames from 'classnames';
import * as React from 'react';
import { Link } from 'react-router';
+import { WebApi } from '../../../types/types';
import { actionsFilter, isDomainPathActive, Query, serializeQuery } from '../utils';
import DeprecatedBadge from './DeprecatedBadge';
import InternalBadge from './InternalBadge';
interface Props {
- domains: T.WebApi.Domain[];
+ domains: WebApi.Domain[];
query: Query;
splat: string;
}
@@ -39,7 +40,7 @@ export default function Menu(props: Props) {
})
.filter(domain => domain.filteredActions.length);
- const renderDomain = (domain: T.WebApi.Domain) => {
+ const renderDomain = (domain: WebApi.Domain) => {
const internal = !domain.actions.find(action => !action.internal);
return (
<Link
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/Params.tsx b/server/sonar-web/src/main/js/apps/web-api/components/Params.tsx
index 41746a001d7..8b2a4202170 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/Params.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/Params.tsx
@@ -19,17 +19,18 @@
*/
import * as React from 'react';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { WebApi } from '../../../types/types';
import DeprecatedBadge from './DeprecatedBadge';
import InternalBadge from './InternalBadge';
interface Props {
- params: T.WebApi.Param[];
+ params: WebApi.Param[];
showDeprecated: boolean;
showInternal: boolean;
}
export default class Params extends React.PureComponent<Props> {
- renderKey(param: T.WebApi.Param) {
+ renderKey(param: WebApi.Param) {
return (
<td className="markdown" style={{ width: 180 }}>
<code>{param.key}</code>
@@ -69,7 +70,7 @@ export default class Params extends React.PureComponent<Props> {
);
}
- renderConstraint(param: T.WebApi.Param, field: keyof T.WebApi.Param, label: string) {
+ renderConstraint(param: WebApi.Param, field: keyof WebApi.Param, label: string) {
const value = param[field];
if (value !== undefined) {
return (
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/ResponseExample.tsx b/server/sonar-web/src/main/js/apps/web-api/components/ResponseExample.tsx
index ade727b8772..393de0a3c45 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/ResponseExample.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/ResponseExample.tsx
@@ -19,14 +19,15 @@
*/
import * as React from 'react';
import { fetchResponseExample as fetchResponseExampleApi } from '../../../api/web-api';
+import { WebApi } from '../../../types/types';
interface Props {
- action: T.WebApi.Action;
- domain: T.WebApi.Domain;
+ action: WebApi.Action;
+ domain: WebApi.Domain;
}
interface State {
- responseExample?: T.WebApi.Example;
+ responseExample?: WebApi.Example;
}
export default class ResponseExample extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx b/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
index fda24c8f547..6f9cb520f5a 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
@@ -28,6 +28,7 @@ import ScreenPositionHelper from '../../../components/common/ScreenPositionHelpe
import { translate } from '../../../helpers/l10n';
import { addSideBarClass, removeSideBarClass } from '../../../helpers/pages';
import { scrollToElement } from '../../../helpers/scrolling';
+import { WebApi } from '../../../types/types';
import '../styles/web-api.css';
import {
getActionKey,
@@ -44,7 +45,7 @@ import Search from './Search';
type Props = WithRouterProps;
interface State {
- domains: T.WebApi.Domain[];
+ domains: WebApi.Domain[];
}
export class WebApiApp extends React.PureComponent<Props, State> {
@@ -78,7 +79,7 @@ export class WebApiApp extends React.PureComponent<Props, State> {
);
}
- parseDomains(domains: any[]): T.WebApi.Domain[] {
+ parseDomains(domains: any[]): WebApi.Domain[] {
return domains.map(domain => {
const deprecated = getLatestDeprecatedAction(domain);
const internal = !domain.actions.find((action: any) => !action.internal);
@@ -199,7 +200,7 @@ export class WebApiApp extends React.PureComponent<Props, State> {
export default withRouter(WebApiApp);
/** Checks if all actions are deprecated, and returns the latest deprecated one */
-function getLatestDeprecatedAction(domain: Pick<T.WebApi.Domain, 'actions'>) {
+function getLatestDeprecatedAction(domain: Pick<WebApi.Domain, 'actions'>) {
const noVersion = { major: 0, minor: 0 };
const allActionsDeprecated = domain.actions.every(
({ deprecatedSince }) => deprecatedSince !== undefined
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Menu-test.tsx b/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Menu-test.tsx
index b47e77c8cd1..4e4f46952e1 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Menu-test.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Menu-test.tsx
@@ -19,9 +19,10 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { WebApi } from '../../../../types/types';
import Menu from '../Menu';
-const ACTION: T.WebApi.Action = {
+const ACTION: WebApi.Action = {
key: 'foo',
changelog: [],
description: 'Foo Desc',
@@ -29,12 +30,12 @@ const ACTION: T.WebApi.Action = {
internal: false,
post: false
};
-const DOMAIN1: T.WebApi.Domain = {
+const DOMAIN1: WebApi.Domain = {
actions: [ACTION],
path: 'foo',
description: 'API Foo'
};
-const DOMAIN2: T.WebApi.Domain = {
+const DOMAIN2: WebApi.Domain = {
actions: [ACTION],
path: 'bar',
description: 'API Bar'
@@ -51,7 +52,7 @@ const SEARCH_FOO = { search: 'Foo', deprecated: false, internal: false };
const SEARCH_BAR = { search: 'Bar', deprecated: false, internal: false };
it('should render deprecated domains', () => {
- const domain: T.WebApi.Domain = {
+ const domain: WebApi.Domain = {
...DOMAIN2,
deprecatedSince: '5.0',
actions: [{ ...ACTION, deprecatedSince: '5.0' }]
@@ -61,7 +62,7 @@ it('should render deprecated domains', () => {
});
it('should not render deprecated domains', () => {
- const domain: T.WebApi.Domain = {
+ const domain: WebApi.Domain = {
...DOMAIN2,
deprecatedSince: '5.0',
actions: [{ ...ACTION, deprecatedSince: '5.0' }]
@@ -71,7 +72,7 @@ it('should not render deprecated domains', () => {
});
it('should render internal domains', () => {
- const domain: T.WebApi.Domain = {
+ const domain: WebApi.Domain = {
...DOMAIN2,
internal: true,
actions: [{ ...ACTION, internal: true }]
@@ -81,7 +82,7 @@ it('should render internal domains', () => {
});
it('should not render internal domains', () => {
- const domain: T.WebApi.Domain = {
+ const domain: WebApi.Domain = {
...DOMAIN2,
internal: true,
actions: [{ ...ACTION, internal: true }]
@@ -91,7 +92,7 @@ it('should not render internal domains', () => {
});
it('should render only domains with an action matching the query', () => {
- const domain: T.WebApi.Domain = {
+ const domain: WebApi.Domain = {
...DOMAIN2,
actions: [{ ...ACTION, key: 'bar', description: 'Bar Desc' }]
};
@@ -100,7 +101,7 @@ it('should render only domains with an action matching the query', () => {
});
it('should also render domains with an actions description matching the query', () => {
- const domain: T.WebApi.Domain = {
+ const domain: WebApi.Domain = {
...DOMAIN1,
path: 'baz',
description: 'API Baz',
diff --git a/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Params-test.tsx b/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Params-test.tsx
index 218aff10dbf..a12c09bff6a 100644
--- a/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Params-test.tsx
+++ b/server/sonar-web/src/main/js/apps/web-api/components/__tests__/Params-test.tsx
@@ -19,9 +19,10 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
+import { WebApi } from '../../../../types/types';
import Params from '../Params';
-const DEFAULT_PARAM: T.WebApi.Param = {
+const DEFAULT_PARAM: WebApi.Param = {
key: 'foo',
description: 'Foo desc',
internal: false,
@@ -56,7 +57,7 @@ it('should render deprecated key', () => {
});
it('should render different value constraints', () => {
- const param: T.WebApi.Param = {
+ const param: WebApi.Param = {
...DEFAULT_PARAM,
defaultValue: 'def',
exampleValue: 'foo',
diff --git a/server/sonar-web/src/main/js/apps/web-api/utils.ts b/server/sonar-web/src/main/js/apps/web-api/utils.ts
index 86329e02465..7655e3c53dd 100644
--- a/server/sonar-web/src/main/js/apps/web-api/utils.ts
+++ b/server/sonar-web/src/main/js/apps/web-api/utils.ts
@@ -24,6 +24,7 @@ import {
parseAsString,
serializeString
} from '../../helpers/query';
+import { RawQuery, WebApi } from '../../types/types';
export interface Query {
search: string;
@@ -31,7 +32,7 @@ export interface Query {
internal: boolean;
}
-export function actionsFilter(query: Query, domain: T.WebApi.Domain, action: T.WebApi.Action) {
+export function actionsFilter(query: Query, domain: WebApi.Domain, action: WebApi.Action) {
const lowSearchQuery = query.search.toLowerCase();
return (
(query.internal || !action.internal) &&
@@ -63,7 +64,7 @@ export const isDomainPathActive = (path: string, splat: string) => {
};
export const parseQuery = memoize(
- (urlQuery: T.RawQuery): Query => ({
+ (urlQuery: RawQuery): Query => ({
search: parseAsString(urlQuery['query']),
deprecated: parseAsOptionalBoolean(urlQuery['deprecated']) || false,
internal: parseAsOptionalBoolean(urlQuery['internal']) || false
@@ -71,7 +72,7 @@ export const parseQuery = memoize(
);
export const serializeQuery = memoize(
- (query: Partial<Query>): T.RawQuery =>
+ (query: Partial<Query>): RawQuery =>
cleanQuery({
query: query.search ? serializeString(query.search) : undefined,
deprecated: query.deprecated || undefined,
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/App.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/App.tsx
index 4ba44aab5d4..29299bb45fa 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/App.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/App.tsx
@@ -22,17 +22,18 @@ import { Helmet } from 'react-helmet-async';
import { createWebhook, deleteWebhook, searchWebhooks, updateWebhook } from '../../../api/webhooks';
import Suggestions from '../../../app/components/embed-docs-modal/Suggestions';
import { translate } from '../../../helpers/l10n';
+import { LightComponent, Webhook } from '../../../types/types';
import PageActions from './PageActions';
import PageHeader from './PageHeader';
import WebhooksList from './WebhooksList';
interface Props {
- component?: T.LightComponent;
+ component?: LightComponent;
}
interface State {
loading: boolean;
- webhooks: T.Webhook[];
+ webhooks: Webhook[];
}
export default class App extends React.PureComponent<Props, State> {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/CreateWebhookForm.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/CreateWebhookForm.tsx
index cfeb285deed..323abe9b924 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/CreateWebhookForm.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/CreateWebhookForm.tsx
@@ -24,11 +24,12 @@ import ValidationModal from '../../../components/controls/ValidationModal';
import MandatoryFieldMarker from '../../../components/ui/MandatoryFieldMarker';
import MandatoryFieldsExplanation from '../../../components/ui/MandatoryFieldsExplanation';
import { translate } from '../../../helpers/l10n';
+import { Webhook } from '../../../types/types';
interface Props {
onClose: () => void;
onDone: (data: Values) => Promise<void>;
- webhook?: T.Webhook;
+ webhook?: Webhook;
}
interface Values {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/DeleteWebhookForm.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/DeleteWebhookForm.tsx
index b543fbc1242..38d3d9f60b4 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/DeleteWebhookForm.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/DeleteWebhookForm.tsx
@@ -22,11 +22,12 @@ import { ResetButtonLink, SubmitButton } from '../../../components/controls/butt
import SimpleModal from '../../../components/controls/SimpleModal';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Webhook } from '../../../types/types';
interface Props {
onClose: () => void;
onSubmit: () => Promise<void>;
- webhook: T.Webhook;
+ webhook: Webhook;
}
export default function DeleteWebhookForm({ onClose, onSubmit, webhook }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/DeliveriesForm.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/DeliveriesForm.tsx
index ffd7c4d39d6..1e89a7d979b 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/DeliveriesForm.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/DeliveriesForm.tsx
@@ -24,17 +24,18 @@ import ListFooter from '../../../components/controls/ListFooter';
import Modal from '../../../components/controls/Modal';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Paging, Webhook, WebhookDelivery } from '../../../types/types';
import DeliveryAccordion from './DeliveryAccordion';
interface Props {
onClose: () => void;
- webhook: T.Webhook;
+ webhook: Webhook;
}
interface State {
- deliveries: T.WebhookDelivery[];
+ deliveries: WebhookDelivery[];
loading: boolean;
- paging?: T.Paging;
+ paging?: Paging;
}
const PAGE_SIZE = 10;
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryAccordion.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryAccordion.tsx
index 42c74882ba9..3b2c62ab95c 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryAccordion.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryAccordion.tsx
@@ -23,10 +23,11 @@ import BoxedGroupAccordion from '../../../components/controls/BoxedGroupAccordio
import AlertErrorIcon from '../../../components/icons/AlertErrorIcon';
import AlertSuccessIcon from '../../../components/icons/AlertSuccessIcon';
import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
+import { WebhookDelivery } from '../../../types/types';
import DeliveryItem from './DeliveryItem';
interface Props {
- delivery: T.WebhookDelivery;
+ delivery: WebhookDelivery;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryItem.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryItem.tsx
index bfa6d026a17..65a077cabfb 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryItem.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/DeliveryItem.tsx
@@ -22,10 +22,11 @@ import CodeSnippet from '../../../components/common/CodeSnippet';
import DeferredSpinner from '../../../components/ui/DeferredSpinner';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
+import { WebhookDelivery } from '../../../types/types';
interface Props {
className?: string;
- delivery: T.WebhookDelivery;
+ delivery: WebhookDelivery;
loading: boolean;
payload: string | undefined;
}
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/LatestDeliveryForm.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/LatestDeliveryForm.tsx
index 012b9466a50..8bf16263158 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/LatestDeliveryForm.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/LatestDeliveryForm.tsx
@@ -22,12 +22,13 @@ import { getDelivery } from '../../../api/webhooks';
import { ResetButtonLink } from '../../../components/controls/buttons';
import Modal from '../../../components/controls/Modal';
import { translate, translateWithParameters } from '../../../helpers/l10n';
+import { Webhook, WebhookDelivery } from '../../../types/types';
import DeliveryItem from './DeliveryItem';
interface Props {
- delivery: T.WebhookDelivery;
+ delivery: WebhookDelivery;
onClose: () => void;
- webhook: T.Webhook;
+ webhook: Webhook;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/WebhookActions.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/WebhookActions.tsx
index 5b09c83230e..3837343b040 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/WebhookActions.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/WebhookActions.tsx
@@ -23,6 +23,7 @@ import ActionsDropdown, {
ActionsDropdownItem
} from '../../../components/controls/ActionsDropdown';
import { translate } from '../../../helpers/l10n';
+import { Webhook } from '../../../types/types';
import CreateWebhookForm from './CreateWebhookForm';
import DeleteWebhookForm from './DeleteWebhookForm';
import DeliveriesForm from './DeliveriesForm';
@@ -30,7 +31,7 @@ import DeliveriesForm from './DeliveriesForm';
interface Props {
onDelete: (webhook: string) => Promise<void>;
onUpdate: (data: { webhook: string; name: string; url: string }) => Promise<void>;
- webhook: T.Webhook;
+ webhook: Webhook;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItem.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItem.tsx
index 22f864d2809..2c3b738f198 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItem.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItem.tsx
@@ -19,13 +19,14 @@
*/
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { Webhook } from '../../../types/types';
import WebhookActions from './WebhookActions';
import WebhookItemLatestDelivery from './WebhookItemLatestDelivery';
interface Props {
onDelete: (webhook: string) => Promise<void>;
onUpdate: (data: { webhook: string; name: string; url: string }) => Promise<void>;
- webhook: T.Webhook;
+ webhook: Webhook;
}
export default function WebhookItem({ onDelete, onUpdate, webhook }: Props) {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItemLatestDelivery.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItemLatestDelivery.tsx
index e8e671c10e3..88e4656f583 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItemLatestDelivery.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/WebhookItemLatestDelivery.tsx
@@ -24,10 +24,11 @@ import AlertSuccessIcon from '../../../components/icons/AlertSuccessIcon';
import BulletListIcon from '../../../components/icons/BulletListIcon';
import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
import { translate } from '../../../helpers/l10n';
+import { Webhook } from '../../../types/types';
import LatestDeliveryForm from './LatestDeliveryForm';
interface Props {
- webhook: T.Webhook;
+ webhook: Webhook;
}
interface State {
diff --git a/server/sonar-web/src/main/js/apps/webhooks/components/WebhooksList.tsx b/server/sonar-web/src/main/js/apps/webhooks/components/WebhooksList.tsx
index 40f8815a9a9..40ae1294aad 100644
--- a/server/sonar-web/src/main/js/apps/webhooks/components/WebhooksList.tsx
+++ b/server/sonar-web/src/main/js/apps/webhooks/components/WebhooksList.tsx
@@ -20,12 +20,13 @@
import { sortBy } from 'lodash';
import * as React from 'react';
import { translate } from '../../../helpers/l10n';
+import { Webhook } from '../../../types/types';
import WebhookItem from './WebhookItem';
interface Props {
onDelete: (webhook: string) => Promise<void>;
onUpdate: (data: { webhook: string; name: string; url: string }) => Promise<void>;
- webhooks: T.Webhook[];
+ webhooks: Webhook[];
}
export default class WebhooksList extends React.PureComponent<Props> {