Rework deploy action and close model

Rework the deploy action and the close model feature.

Issue-ID: CLAMP-445, CLAMP-451
Change-Id: Ic122a584b676d50b9bddcac6e5553266b2281a01
Signed-off-by: xuegao <xg353y@intl.att.com>
diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js
index 5022152..121787f 100644
--- a/ui-react/src/components/menu/MenuBar.js
+++ b/ui-react/src/components/menu/MenuBar.js
@@ -24,6 +24,7 @@
 import Nav from 'react-bootstrap/Nav';
 import Navbar from 'react-bootstrap/Navbar';
 import NavDropdown from 'react-bootstrap/NavDropdown';
+import LoopUI from '../../LoopUI';
 import 'bootstrap-css-only/css/bootstrap.min.css';
 import styled from 'styled-components';
 import { Link } from 'react-router-dom'
@@ -56,25 +57,37 @@
 	}
 `;
 export default class MenuBar extends React.Component {
+	state = {
+		loopName: this.props.loopName,
+		disabled: true
+	};
+
+	componentWillReceiveProps(newProps) {
+		if (newProps.loopName !== LoopUI.defaultLoopName) {
+			this.setState({ disabled: false });
+		} else {
+			this.setState({ disabled: true });
+		}
+	}
 
 	render () {
 		return (
 				<Navbar.Collapse>
 					<NavDropdown title="Closed Loop">
 							<NavDropdown.Item as={StyledLink} to="/openLoop">Open CL</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/loopProperties">Properties CL</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/closeLoop">Close Model</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/loopProperties" disabled={this.state.disabled}>Properties CL</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/closeLoop" disabled={this.state.disabled}>Close Model</NavDropdown.Item>
 					</NavDropdown>
 					<NavDropdown title="Manage">
-							<NavDropdown.Item as={StyledLink} to="/submit">Submit</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/stop">Stop</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/restart">Restart</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/delete">Delete</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/deploy">Deploy</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/undeploy">UnDeploy</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/submit" disabled={this.state.disabled}>Submit</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/stop" disabled={this.state.disabled}>Stop</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/restart" disabled={this.state.disabled}>Restart</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/delete" disabled={this.state.disabled}>Delete</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/deploy" disabled={this.state.disabled}>Deploy</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/undeploy" disabled={this.state.disabled}>UnDeploy</NavDropdown.Item>
 					</NavDropdown>
 					<NavDropdown title="View">
-							<NavDropdown.Item as={StyledLink} to="/refreshStatus">Refresh Status</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/refreshStatus" disabled={this.state.disabled}>Refresh Status</NavDropdown.Item>
 					</NavDropdown>
 					<NavDropdown title="Help">
 							<StyledNavLink href="https://wiki.onap.org/" target="_blank">Wiki</StyledNavLink>
diff --git a/ui-react/src/components/menu/PerformActions.js b/ui-react/src/components/menu/PerformActions.js
deleted file mode 100644
index 9c34e14..0000000
--- a/ui-react/src/components/menu/PerformActions.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights
- *                             reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END============================================
- * ===================================================================
- *
- */
-import React from 'react';
-import LoopActionService from '../../api/LoopActionService';
-import Spinner from 'react-bootstrap/Spinner'
-import styled from 'styled-components';
-
-const StyledSpinnerDiv = styled.div`
-	justify-content: center !important;
-	display: flex !important;
-`;
-
-export default class PerformActions extends React.Component {
-	state = {
-		loopName: this.props.loopCache.getLoopName(),
-		loopAction: this.props.loopAction
-	};
-	constructor(props, context) {
-		super(props, context);
-
-		this.refreshStatus = this.refreshStatus.bind(this);
-	}
-	componentWillReceiveProps(newProps) {
-		this.setState({
-			loopName: newProps.loopCache.getLoopName(),
-			loopAction: newProps.loopAction
-		});
-	}
-
-	componentDidMount() {
-		const action = this.state.loopAction;
-		const loopName = this.state.loopName;
-		console.log("Perform action:" + action);
-		LoopActionService.performAction(loopName, action).then(pars => {
-			alert("Action " + action + " successfully performed");
-			// refresh status and update loop logs
-			this.refreshStatus(loopName);
-		})
-		.catch(error => {
-			alert("Action " + action + " failed");
-			// refresh status and update loop logs
-			this.refreshStatus(loopName);
-		});
-
-	}
-
-	refreshStatus(loopName) {
-		LoopActionService.refreshStatus(loopName).then(data => {
-			this.props.updateLoopFunction(data);
-			this.props.history.push('/');
-		})
-			.catch(error => {
-			this.props.history.push('/');
-		});
-	}
-
-	render() {
-		return (
-			<StyledSpinnerDiv>
-				<Spinner animation="border" role="status">
-				</Spinner>
-			</StyledSpinnerDiv>
-		);
-	}
-}
diff --git a/ui-react/src/components/menu/RefreshStatus.js b/ui-react/src/components/menu/RefreshStatus.js
deleted file mode 100644
index cf08655..0000000
--- a/ui-react/src/components/menu/RefreshStatus.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights
- *                             reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END============================================
- * ===================================================================
- *
- */
-import React from 'react';
-import LoopActionService from '../../api/LoopActionService';
-import Spinner from 'react-bootstrap/Spinner'
-import styled from 'styled-components';
-
-const StyledSpinnerDiv = styled.div`
-	justify-content: center !important;
-	display: flex !important;
-`;
-
-export default class RefreshStatus extends React.Component {
-	state = {
-		loopName: this.props.loopCache.getLoopName()
-	};
-
-	componentWillReceiveProps(newProps) {
-		this.setState({
-			loopName: newProps.loopCache.getLoopName()
-		});
-	}
-
-	componentDidMount() {
-		console.log("Refresh status for: " + this.state.loopName);
-		// refresh status and update loop logs
-		LoopActionService.refreshStatus(this.state.loopName).then(data => {
-			alert("Status successfully refreshed")
-			this.props.updateLoopFunction(data);
-			this.props.history.push('/');
-		})
-		.catch(error => {
-			alert("Status refreshing failed");
-			this.props.history.push('/');
-		});
-	}
-
-	render() {
-		return (
-			<StyledSpinnerDiv>
-				<Spinner animation="border" role="status">
-				</Spinner>
-			</StyledSpinnerDiv>
-		);
-	}
-}