Initial coomit for AAI-UI(sparky-fe)
[aai/sparky-fe.git] / src / app / tierSupport / TierSupportActions.js
diff --git a/src/app/tierSupport/TierSupportActions.js b/src/app/tierSupport/TierSupportActions.js
new file mode 100644 (file)
index 0000000..d6f5e5a
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * ============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 {tierSupportActionTypes,
+  TS_BACKEND_SEARCH_SELECTED_NODE_URL} from 'app/tierSupport/TierSupportConstants.js';
+import {
+  POST,
+  POST_HEADER,
+  ERROR_RETRIEVING_DATA,
+  NO_RESULTS_FOUND
+} from 'app/networking/NetworkConstants.js';
+import networkCall from 'app/networking/NetworkCalls.js';
+import {
+  getSetGlobalMessageEvent,
+  getClearGlobalMessageEvent
+} from 'app/GlobalInlineMessageBar/GlobalInlineMessageBarActions.js';
+import {
+  STATUS_CODE_204_NO_CONTENT,
+  STATUS_CODE_3XX_REDIRECTION,
+  STATUS_CODE_5XX_SERVER_ERROR
+} from 'utils/GlobalConstants.js';
+
+function createOnNodeDetailsChangeEvent(newDetails) {
+  return {
+    type: tierSupportActionTypes.TS_GRAPH_NODE_SELECTED,
+    data: newDetails
+  };
+}
+
+function createSplitPaneResizeEvent(initialLoad) {
+  return {
+    type: tierSupportActionTypes.SPLIT_PANE_RESIZE,
+    data: initialLoad
+  };
+}
+
+function createOnNodeMenuSelectEvent(selectedMenu) {
+  return {
+    type: tierSupportActionTypes.TS_GRAPH_NODE_MENU_SELECTED,
+    data: selectedMenu
+  };
+}
+
+export function onNodeDetailsChange(newDetails) {
+  return dispatch => {
+    dispatch(createOnNodeDetailsChangeEvent(newDetails));
+  };
+}
+
+export function splitPaneResize(initialLoad) {
+  return dispatch => {
+    dispatch(createSplitPaneResizeEvent(initialLoad));
+  };
+}
+
+export function onNodeMenuChange(selectedMenu) {
+  return dispatch => {
+    dispatch(createOnNodeMenuSelectEvent(selectedMenu));
+  };
+}
+
+function createNodeDetailsFoundEvent(nodeDetails) {
+  return {
+    type: tierSupportActionTypes.TS_NODE_SEARCH_RESULTS,
+    data: nodeDetails
+  };
+}
+
+function noNodeDetailsFoundEvent(errorText) {
+  return {
+    type: tierSupportActionTypes.TS_NODE_SEARCH_NO_RESULTS,
+    data: {errorMsg: errorText}
+  };
+}
+
+function getInvalidSelectedNodeSearchEvent(errorText) {
+  return {
+    type: tierSupportActionTypes.TIER_SUPPORT_NETWORK_ERROR,
+    data: {value: errorText, errorMsg: ERROR_RETRIEVING_DATA}
+  };
+}
+
+export function clearVIData() {
+  return {
+    type: tierSupportActionTypes.TIER_SUPPORT_CLEAR_DATA
+  };
+}
+
+export function fetchSelectedNodeElement(fetchRequestCallback) {
+  return dispatch => {
+    return fetchRequestCallback().then(
+      (response) => {
+        if (response.status === STATUS_CODE_204_NO_CONTENT || response.status >= STATUS_CODE_3XX_REDIRECTION) {
+          return Promise.reject(new Error(response.status));
+        } else {
+          // assume 200 status
+          return response.json();
+        }
+      }
+    ).then(
+      (responseJson) => {
+        if (responseJson.nodes.length > 0) {
+          dispatch(createNodeDetailsFoundEvent(responseJson));
+        } else {
+          dispatch(noNodeDetailsFoundEvent(NO_RESULTS_FOUND));
+        }
+      }
+    ).catch(
+      (errorCode) => {
+        if (errorCode.message >= STATUS_CODE_5XX_SERVER_ERROR) {
+          dispatch(getInvalidSelectedNodeSearchEvent(ERROR_RETRIEVING_DATA));
+        } else {
+          // TODO - assuming 204 status, but should include additional
+          // statuses in the future with proper messaging in order to return
+          // better messaging
+          dispatch(noNodeDetailsFoundEvent(NO_RESULTS_FOUND));
+        }
+      }
+    );
+  };
+}
+
+export function querySelectedNodeElement(
+  searchHashId, selectedNodeFetchRequest) {
+  let payload = {
+    hashId: searchHashId
+  };
+
+  if (selectedNodeFetchRequest === undefined) {
+    let postBody = JSON.stringify(payload);
+    selectedNodeFetchRequest =
+      () => networkCall.fetchRequestObj(TS_BACKEND_SEARCH_SELECTED_NODE_URL, POST,
+        POST_HEADER, postBody);
+  }
+
+  return dispatch => {
+    dispatch(fetchSelectedNodeElement(selectedNodeFetchRequest));
+  };
+}
+
+export function setNotificationText(msgText, msgSeverity) {
+  if (msgText.length > 0) {
+    return dispatch => {
+      dispatch(
+        getSetGlobalMessageEvent(msgText, msgSeverity));
+    };
+  } else {
+    return dispatch => {
+      dispatch(getClearGlobalMessageEvent());
+    };
+  }
+}