|
@@ -26,25 +26,28 @@ import DropdownFilterGroup from '../../organisms/DropdownFilterGroup'
|
|
|
import AssessmentListItem from '../../molecules/AssessmentListItem'
|
|
import AssessmentListItem from '../../molecules/AssessmentListItem'
|
|
|
import type { Assessment } from '../../../types/Assessment'
|
|
import type { Assessment } from '../../../types/Assessment'
|
|
|
import type { Endpoint } from '../../../types/Endpoint'
|
|
import type { Endpoint } from '../../../types/Endpoint'
|
|
|
-import type { Project } from '../../../types/Project'
|
|
|
|
|
|
|
|
|
|
import AzureStore from '../../../stores/AzureStore'
|
|
import AzureStore from '../../../stores/AzureStore'
|
|
|
import AssessmentStore from '../../../stores/AssessmentStore'
|
|
import AssessmentStore from '../../../stores/AssessmentStore'
|
|
|
import EndpointStore from '../../../stores/EndpointStore'
|
|
import EndpointStore from '../../../stores/EndpointStore'
|
|
|
import ProjectStore from '../../../stores/ProjectStore'
|
|
import ProjectStore from '../../../stores/ProjectStore'
|
|
|
import UserStore from '../../../stores/UserStore'
|
|
import UserStore from '../../../stores/UserStore'
|
|
|
-import Wait from '../../../utils/Wait'
|
|
|
|
|
|
|
|
|
|
import { requestPollTimeout } from '../../../config'
|
|
import { requestPollTimeout } from '../../../config'
|
|
|
|
|
|
|
|
const Wrapper = styled.div``
|
|
const Wrapper = styled.div``
|
|
|
|
|
|
|
|
type Props = {}
|
|
type Props = {}
|
|
|
|
|
+type State = {modalIsOpen: boolean}
|
|
|
@observer
|
|
@observer
|
|
|
-class AssessmentsPage extends React.Component<Props> {
|
|
|
|
|
|
|
+class AssessmentsPage extends React.Component<Props, State> {
|
|
|
disablePolling: boolean
|
|
disablePolling: boolean
|
|
|
pollTimeout: TimeoutID
|
|
pollTimeout: TimeoutID
|
|
|
|
|
|
|
|
|
|
+ state = {
|
|
|
|
|
+ modalIsOpen: false,
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
componentWillMount() {
|
|
componentWillMount() {
|
|
|
ProjectStore.getProjects()
|
|
ProjectStore.getProjects()
|
|
|
|
|
|
|
@@ -66,6 +69,7 @@ class AssessmentsPage extends React.Component<Props> {
|
|
|
|
|
|
|
|
componentWillUnmount() {
|
|
componentWillUnmount() {
|
|
|
this.disablePolling = true
|
|
this.disablePolling = true
|
|
|
|
|
+ clearTimeout(this.pollTimeout)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
getEndpointsDropdownConfig() {
|
|
getEndpointsDropdownConfig() {
|
|
@@ -138,19 +142,25 @@ class AssessmentsPage extends React.Component<Props> {
|
|
|
window.location.href = `/#/assessment/${encodeURIComponent(btoa(JSON.stringify({ ...info })))}`
|
|
window.location.href = `/#/assessment/${encodeURIComponent(btoa(JSON.stringify({ ...info })))}`
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- handleProjectChange(project: Project) {
|
|
|
|
|
- Wait.for(() => UserStore.user ? UserStore.user.project.id === project.id : false, () => {
|
|
|
|
|
- AssessmentStore.clearSelection()
|
|
|
|
|
- AzureStore.clearAssessments()
|
|
|
|
|
- EndpointStore.getEndpoints({ showLoading: true }).then(() => {
|
|
|
|
|
- let endpoints = EndpointStore.endpoints.filter(e => e.type === 'azure')
|
|
|
|
|
- if (endpoints.length > 0) {
|
|
|
|
|
- this.chooseEndpoint(AssessmentStore.selectedEndpoint && AssessmentStore.selectedEndpoint.id ? AssessmentStore.selectedEndpoint : endpoints[0])
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ handleProjectChange() {
|
|
|
|
|
+ AssessmentStore.clearSelection()
|
|
|
|
|
+ AzureStore.clearAssessments()
|
|
|
|
|
+ EndpointStore.getEndpoints({ showLoading: true }).then(() => {
|
|
|
|
|
+ let endpoints = EndpointStore.endpoints.filter(e => e.type === 'azure')
|
|
|
|
|
+ if (endpoints.length > 0) {
|
|
|
|
|
+ this.chooseEndpoint(AssessmentStore.selectedEndpoint && AssessmentStore.selectedEndpoint.id ? AssessmentStore.selectedEndpoint : endpoints[0])
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- UserStore.switchProject(project.id)
|
|
|
|
|
|
|
+ handleModalOpen() {
|
|
|
|
|
+ this.setState({ modalIsOpen: true })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ handleModalClose() {
|
|
|
|
|
+ this.setState({ modalIsOpen: false }, () => {
|
|
|
|
|
+ this.pollData()
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
areResourceGroupsLoading() {
|
|
areResourceGroupsLoading() {
|
|
@@ -158,8 +168,7 @@ class AssessmentsPage extends React.Component<Props> {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pollData() {
|
|
pollData() {
|
|
|
- if (this.disablePolling) {
|
|
|
|
|
- clearTimeout(this.pollTimeout)
|
|
|
|
|
|
|
+ if (this.disablePolling || this.state.modalIsOpen) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -280,7 +289,9 @@ class AssessmentsPage extends React.Component<Props> {
|
|
|
headerComponent={
|
|
headerComponent={
|
|
|
<PageHeader
|
|
<PageHeader
|
|
|
title="Planning"
|
|
title="Planning"
|
|
|
- onProjectChange={project => { this.handleProjectChange(project) }}
|
|
|
|
|
|
|
+ onProjectChange={() => { this.handleProjectChange() }}
|
|
|
|
|
+ onModalOpen={() => { this.handleModalOpen() }}
|
|
|
|
|
+ onModalClose={() => { this.handleModalClose() }}
|
|
|
/>
|
|
/>
|
|
|
}
|
|
}
|
|
|
/>
|
|
/>
|