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>
- );
- }
-}