From ca007e933bcd9f63aa77801656ed9dd4142c432c Mon Sep 17 00:00:00 2001
From: ARULNA <arul.nambi@amdocs.com>
Date: Fri, 2 Jun 2017 16:27:25 -0400
Subject: Initial coomit for AAI-UI(sparky-fe)

Change-Id: I9f8482824a52bac431c100939899e760c0fa4fdb
Signed-off-by: ARULNA <arul.nambi@amdocs.com>
---
 src/app/vnfSearch/VnfSearch.jsx | 129 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)
 create mode 100644 src/app/vnfSearch/VnfSearch.jsx

(limited to 'src/app/vnfSearch/VnfSearch.jsx')

diff --git a/src/app/vnfSearch/VnfSearch.jsx b/src/app/vnfSearch/VnfSearch.jsx
new file mode 100644
index 0000000..f1f69f5
--- /dev/null
+++ b/src/app/vnfSearch/VnfSearch.jsx
@@ -0,0 +1,129 @@
+/*
+ * ============LICENSE_START===================================================
+ * SPARKY (AAI UI service)
+ * ============================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * 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=====================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+import React, {Component} from 'react';
+import {connect} from 'react-redux';
+import {
+  VNF_TITLE,
+  VNFS_ROUTE,
+  DEFAULT_VNFS_SEARCH_HASH
+} from 'app/vnfSearch/VnfSearchConstants.js';
+import {
+  processTotalVnfVisualizationOnSearchChange,
+  processOrchStatusVisualizationOnSearchChange,
+  processProvStatusVisualizationOnSearchChange,
+  setNotificationText
+} from 'app/vnfSearch/VnfSearchActions.js';
+import VnfSearchOrchStatusVisualizations from 'app/vnfSearch/VnfSearchOrchestratedStatusVisualization.jsx';
+import VnfSearchProvStatusVisualizations from 'app/vnfSearch/VnfSearchProvStatusVisualization.jsx';
+import VnfSearchTotalCountVisualization from 'app/vnfSearch/VnfSearchTotalCountVisualization.jsx';
+import i18n from 'utils/i18n/i18n';
+import {changeUrlAddress, buildRouteObj} from 'utils/Routes.js';
+
+const mapStateToProps = ({vnfSearch}) => {
+  let {
+        feedbackMsgText = '',
+        feedbackMsgSeverity = ''
+      } = vnfSearch;
+
+  return {
+    feedbackMsgText,
+    feedbackMsgSeverity
+  };
+};
+
+let mapActionToProps = (dispatch) => {
+  return {
+    onReceiveNewParams: (vnfParam) => {
+      dispatch(processTotalVnfVisualizationOnSearchChange(vnfParam));
+      dispatch(processOrchStatusVisualizationOnSearchChange(vnfParam));
+      dispatch(processProvStatusVisualizationOnSearchChange(vnfParam));
+    },
+    onMessageStateChange: (msgText, msgSeverity) => {
+      dispatch(setNotificationText(msgText, msgSeverity));
+    }
+  };
+};
+
+class vnfSearch extends Component {
+  componentWillMount() {
+    if (this.props.match &&
+      this.props.match.params &&
+      this.props.match.params.vnfParam) {
+      this.props.onReceiveNewParams(this.props.match.params.vnfParam);
+    } else {
+      // render using default search params (hash for "VNFs")
+      this.props.onReceiveNewParams(DEFAULT_VNFS_SEARCH_HASH);
+      changeUrlAddress(buildRouteObj(VNFS_ROUTE, DEFAULT_VNFS_SEARCH_HASH),
+        this.props.history);
+    }
+
+    if (this.props.feedbackMsgText) {
+      this.props.onMessageStateChange(this.props.feedbackMsgText,
+        this.props.feedbackMsgSeverity);
+    }
+  }
+
+  componentWillReceiveProps(nextProps) {
+    if (nextProps.match.params.vnfParam) {
+      if (nextProps.match.params.vnfParam !==
+        this.props.match.params.vnfParam) {
+        this.props.onReceiveNewParams(nextProps.match.params.vnfParam);
+      }
+    } else if (this.props.match.params.vnfParam) {
+      // currently on VNF page and somebody has clicked the VNF NavLink
+      // want to reload the view with the default params (hash for "NFVs")
+      this.props.onReceiveNewParams(DEFAULT_VNFS_SEARCH_HASH);
+      changeUrlAddress(buildRouteObj(VNFS_ROUTE, DEFAULT_VNFS_SEARCH_HASH),
+        this.props.history);
+    }
+
+    if (nextProps.feedbackMsgText &&
+      nextProps.feedbackMsgText !==
+      this.props.feedbackMsgText) {
+      this.props.onMessageStateChange(nextProps.feedbackMsgText,
+        nextProps.feedbackMsgSeverity);
+    }
+  }
+
+  componentWillUnmount() {
+    // resetting to default params so on relaunch there will be no
+    // visibility of old searches
+    this.props.onReceiveNewParams(DEFAULT_VNFS_SEARCH_HASH);
+  }
+
+  render() {
+    return (
+      <div>
+        <div className='secondary-header'>
+          <span className='secondary-title'>{i18n(VNF_TITLE)}</span>
+        </div>
+        <VnfSearchTotalCountVisualization />
+        <VnfSearchProvStatusVisualizations />
+        <VnfSearchOrchStatusVisualizations />
+      </div>
+    );
+  }
+}
+export default connect(mapStateToProps, mapActionToProps)(vnfSearch);
-- 
cgit 1.2.3-korg

