Upgrade to react 16
[aai/sparky-fe.git] / src / app / tierSupport / TierSupport.jsx
index e38b43d..5608cd3 100644 (file)
@@ -1,37 +1,38 @@
 /*
- * ============LICENSE_START===================================================
- * SPARKY (AAI UI service)
- * ============================================================================
- * Copyright © 2017 AT&T Intellectual Property.
- * Copyright © 2017 Amdocs
- * All rights reserved.
- * ============================================================================
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
+ * ================================================================================
  * 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
+ *       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=====================================================
- *
- * ECOMP and OpenECOMP are trademarks
- * and service marks of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
  */
-
 import React, {Component} from 'react';
+import { PropTypes } from 'prop-types';
 import {connect} from 'react-redux';
 import SplitPane from 'react-split-pane';
+import Spinner from 'utils/SpinnerContainer.jsx';
 
 import {setSecondaryTitle} from 'app/MainScreenWrapperActionHelper.js';
 import ForceDirectedGraph from 'generic-components/graph/ForceDirectedGraph.jsx';
 import SelectedNodeDetails from 'app/tierSupport/selectedNodeDetails/SelectedNodeDetails.jsx';
 
 
+import {
+  overlayNetworkCallback,
+} from '../MainScreenWrapperActionHelper.js';
+
 import overlaysDetails from 'resources/overlays/overlaysDetails.json';
 import * as Overlays from 'app/overlays/OverlayImports.js';
 
@@ -49,6 +50,7 @@ import {
   TSUI_NODE_DETAILS_INITIAL_WIDTH,
   TSUI_NODE_DETAILS_MIN_WIDTH,
   TSUI_GRAPH_MENU_NODE_DETAILS,
+  tierSupportActionTypes
 } from './TierSupportConstants.js';
 
 let mapStateToProps = (
@@ -71,7 +73,8 @@ let mapStateToProps = (
         graphNodeSelectedMenu = TSUI_GRAPH_MENU_NODE_DETAILS,
         feedbackMsgText = '',
         feedbackMsgSeverity = '',
-        nodeData = {}
+        nodeData = {},
+        enableBusyFeedback = false
       } = tierSupportReducer;
 
   let {
@@ -87,7 +90,8 @@ let mapStateToProps = (
     selectedSuggestion,
     feedbackMsgText,
     feedbackMsgSeverity,
-    nodeData
+    nodeData,
+    enableBusyFeedback
   };
 };
 
@@ -113,19 +117,23 @@ let mapActionToProps = (dispatch) => {
     },
     onRequestClearData: () => {
       dispatch(clearVIData());
+    },
+    onOverlayNetworkCallback: (apiUrl, body, viewName, curViewData, responseEventKey) =>  {
+      dispatch(overlayNetworkCallback(apiUrl, body, viewName, curViewData, responseEventKey));
     }
   };
 };
 
 class TierSupport extends Component {
   static propTypes = {
-    forceDirectedGraphRawData: React.PropTypes.object,
-    windowWidth: React.PropTypes.number,
-    windowHeight: React.PropTypes.number,
-    graphNodeSelectedMenu: React.PropTypes.string,
-    feedbackMsgText: React.PropTypes.string,
-    feedbackMsgSeverity: React.PropTypes.string,
-    nodeData: React.PropTypes.object
+    forceDirectedGraphRawData: PropTypes.object,
+    windowWidth: PropTypes.number,
+    windowHeight: PropTypes.number,
+    graphNodeSelectedMenu: PropTypes.string,
+    feedbackMsgText: PropTypes.string,
+    feedbackMsgSeverity: PropTypes.string,
+    nodeData: PropTypes.object,
+    enableBusyFeedback: PropTypes.bool
   };
 
   componentWillReceiveProps(nextProps) {
@@ -134,7 +142,7 @@ class TierSupport extends Component {
       this.props.match.params.viParam) {
       this.props.onNewVIParam(nextProps.match.params.viParam);
     }
-    if(nextProps.match.params.viParam === undefined && nextProps.match.params.viParam !==
+    if(nextProps.match.params.viParam && nextProps.match.params.viParam !==
       this.props.match.params.viParam) {
       this.props.onRequestClearData();
     }
@@ -171,10 +179,9 @@ class TierSupport extends Component {
             windowWidth,
             windowHeight,
             onSplitPaneResize,
-            onNodeMenuSelect
+            onNodeMenuSelect,
+            enableBusyFeedback
           } = this.props;
-
-
     let availableOverlay;
     let overlayComponent;
     // Currently only ONE overlay can be added to each view.
@@ -202,35 +209,37 @@ class TierSupport extends Component {
     let currentSelectedMenu = this.getCurrentSelectedMenu(overlayComponent);
     return (
       <div className='tier-support-ui'>
-        <SplitPane
-          split='vertical'
-          enableResizing='true'
-          onDragFinished={ () => {
-            onSplitPaneResize(false);
-          } }
-          defaultSize={TSUI_NODE_DETAILS_INITIAL_WIDTH}
-          minSize={TSUI_NODE_DETAILS_MIN_WIDTH}
-          maxSize={-200}
-          primary='second'>
-          <div>
-            <ForceDirectedGraph
-              viewWidth={windowWidth}
-              viewHeight={windowHeight}
-              graphData={forceDirectedGraphRawData}
-              nodeSelectedCallback={(nodeData) => {
-                onNodeSelected(nodeData);
-              }}
-              nodeButtonSelectedCallback={(selectedMenuId) => {
-                onNodeMenuSelect(selectedMenuId);
-              }}
-              dataOverlayButtons={dataOverlayButtons}
-              currentlySelectedNodeView={currentNodeButton}/>
+          <Spinner loading={enableBusyFeedback}>
+            <SplitPane
+              split='vertical'
+              enableResizing='true'
+              onDragFinished={ () => {
+                onSplitPaneResize(false);
+              } }
+              defaultSize={TSUI_NODE_DETAILS_INITIAL_WIDTH}
+              minSize={TSUI_NODE_DETAILS_MIN_WIDTH}
+              maxSize={-200}
+              primary='second'>
+              <div>
+                <ForceDirectedGraph
+                  viewWidth={windowWidth}
+                  viewHeight={windowHeight}
+                  graphData={forceDirectedGraphRawData}
+                  nodeSelectedCallback={(nodeData) => {
+                    onNodeSelected(nodeData);
+                  }}
+                  nodeButtonSelectedCallback={(selectedMenuId) => {
+                    onNodeMenuSelect(selectedMenuId);
+                  }}
+                  dataOverlayButtons={dataOverlayButtons}
+                  currentlySelectedNodeView={currentNodeButton}/>
 
-          </div>
-          <div>
-            {currentSelectedMenu}
-          </div>
-        </SplitPane>
+              </div>
+              <div>
+                {currentSelectedMenu}
+              </div>
+            </SplitPane>
+          </Spinner>
       </div>
     );
   }
@@ -256,7 +265,17 @@ class TierSupport extends Component {
       if (this.isNotEmpty(this.props.nodeData) && overlayComponent) {
         if (Overlays.default.hasOwnProperty(overlayComponent)) {
           let OverlayComponent = Overlays.default[overlayComponent];
-          secondOverlay = <OverlayComponent nodeDetails={this.props.nodeData}/>;
+          secondOverlay = <OverlayComponent
+            nodeDetails={this.props.nodeData}
+            networkingCallback={(apiUrl, body, paramName, curViewData) => {
+              this.props.onOverlayNetworkCallback(
+                apiUrl,
+                body,
+                paramName,
+                curViewData,
+                tierSupportActionTypes.TS_OVERLAY_NETWORK_CALLBACK_RESPONSE_RECEIVED);
+            }} />;
+
         }
       }
       return secondOverlay;