cf5a3c20e317d03447fee9df323c0c389a8ef9e7
[clamp.git] / ui-react / src / components / dialogs / PerformActions.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  *
22  */
23 import React from 'react';
24 import LoopActionService from '../../api/LoopActionService';
25 import Spinner from 'react-bootstrap/Spinner'
26 import styled from 'styled-components';
27
28 const StyledSpinnerDiv = styled.div`
29         justify-content: center !important;
30         display: flex !important;
31 `;
32
33 export default class PerformActions extends React.Component {
34         state = {
35                 loopName: this.props.loopCache.getLoopName(),
36                 loopAction: this.props.loopAction
37         };
38         constructor(props, context) {
39                 super(props, context);
40
41                 this.refreshStatus = this.refreshStatus.bind(this);
42         }
43         componentWillReceiveProps(newProps) {
44                 this.setState({
45                         loopName: newProps.loopCache.getLoopName(),
46                         loopAction: newProps.loopAction
47                 });
48         }
49
50         componentDidMount() {
51                 const action = this.state.loopAction;
52                 const loopName = this.state.loopName;
53
54                 LoopActionService.performAction(loopName, action).then(pars => {
55                         this.props.showSucAlert("Action " + action + " successfully performed");
56                         // refresh status and update loop logs
57                         this.refreshStatus(loopName);
58                 })
59                 .catch(error => {
60                         this.props.showFailAlert("Action " + action + " failed");
61                         // refresh status and update loop logs
62                         this.refreshStatus(loopName);
63                 });
64
65         }
66
67         refreshStatus(loopName) {
68                 LoopActionService.refreshStatus(loopName).then(data => {
69                         this.props.updateLoopFunction(data);
70                         this.props.history.push('/');
71                 })
72                         .catch(error => {
73                         this.props.history.push('/');
74                 });
75         }
76
77         render() {
78                 return (
79                         <StyledSpinnerDiv>
80                                 <Spinner animation="border" role="status">
81                                 </Spinner>
82                         </StyledSpinnerDiv>
83                 );
84         }
85 }