2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 import {tierSupportActionTypes,
22 TS_BACKEND_SEARCH_SELECTED_NODE_URL} from 'app/tierSupport/TierSupportConstants.js';
26 ERROR_RETRIEVING_DATA,
28 } from 'app/networking/NetworkConstants.js';
29 import networkCall from 'app/networking/NetworkCalls.js';
31 getSetGlobalMessageEvent,
32 getClearGlobalMessageEvent
33 } from 'app/globalInlineMessageBar/GlobalInlineMessageBarActions.js';
35 STATUS_CODE_204_NO_CONTENT,
36 STATUS_CODE_3XX_REDIRECTION,
37 STATUS_CODE_5XX_SERVER_ERROR
38 } from 'utils/GlobalConstants.js';
40 function createOnNodeDetailsChangeEvent(newDetails) {
42 type: tierSupportActionTypes.TS_GRAPH_NODE_SELECTED,
47 function createSplitPaneResizeEvent(initialLoad) {
49 type: tierSupportActionTypes.SPLIT_PANE_RESIZE,
54 function createOnNodeMenuSelectEvent(selectedMenu) {
56 type: tierSupportActionTypes.TS_GRAPH_NODE_MENU_SELECTED,
61 export function onNodeDetailsChange(newDetails) {
63 dispatch(createOnNodeDetailsChangeEvent(newDetails));
67 export function splitPaneResize(initialLoad) {
69 dispatch(createSplitPaneResizeEvent(initialLoad));
73 export function onNodeMenuChange(selectedMenu) {
75 dispatch(createOnNodeMenuSelectEvent(selectedMenu));
79 function createNodeDetailsFoundEvent(nodeDetails) {
81 type: tierSupportActionTypes.TS_NODE_SEARCH_RESULTS,
86 function createSelectedNodeDetails(nodeDetails) {
87 var selectedNodeDetail;
88 for(let i = 0; i < nodeDetails.nodes.length; i++) {
89 if(nodeDetails.nodes[i].nodeMeta.className === 'selectedSearchedNodeClass') {
90 selectedNodeDetail = nodeDetails.nodes[i];
95 type: tierSupportActionTypes.TS_GRAPH_NODE_SELECTED,
96 data: selectedNodeDetail
100 function noNodeDetailsFoundEvent(errorText) {
102 type: tierSupportActionTypes.TS_NODE_SEARCH_NO_RESULTS,
103 data: {errorMsg: errorText}
107 function getInvalidSelectedNodeSearchEvent(errorText) {
109 type: tierSupportActionTypes.TIER_SUPPORT_NETWORK_ERROR,
110 data: {value: errorText, errorMsg: ERROR_RETRIEVING_DATA}
114 export function clearVIData() {
116 type: tierSupportActionTypes.TIER_SUPPORT_CLEAR_DATA
120 function setBusyFeedback(){
122 type: tierSupportActionTypes.TIER_SUPPORT_ACTIVATE_BUSY_FEEDBACK
126 function disableBusyFeedback(){
128 type: tierSupportActionTypes.TIER_SUPPORT_DISABLE_BUSY_FEEDBACK
132 export function fetchSelectedNodeElement(fetchRequestCallback) {
134 return fetchRequestCallback().then(
136 if (response.status === STATUS_CODE_204_NO_CONTENT || response.status >= STATUS_CODE_3XX_REDIRECTION) {
137 return Promise.reject(new Error(response.status));
140 return response.json();
145 if (responseJson.nodes.length > 0) {
146 dispatch(createNodeDetailsFoundEvent(responseJson));
147 dispatch(createSelectedNodeDetails(responseJson));
149 dispatch(noNodeDetailsFoundEvent(NO_RESULTS_FOUND));
154 dispatch(disableBusyFeedback());
158 dispatch(disableBusyFeedback());
159 if (errorCode.message >= STATUS_CODE_5XX_SERVER_ERROR) {
160 dispatch(getInvalidSelectedNodeSearchEvent(ERROR_RETRIEVING_DATA));
162 // TODO - assuming 204 status, but should include additional
163 // statuses in the future with proper messaging in order to return
165 dispatch(noNodeDetailsFoundEvent(NO_RESULTS_FOUND));
172 export function querySelectedNodeElement(
173 searchHashId, selectedNodeFetchRequest) {
178 if (selectedNodeFetchRequest === undefined) {
179 let postBody = JSON.stringify(payload);
180 selectedNodeFetchRequest =
181 () => networkCall.fetchRequestObj(TS_BACKEND_SEARCH_SELECTED_NODE_URL, POST,
182 POST_HEADER, postBody);
187 dispatch(setBusyFeedback()),
188 dispatch(fetchSelectedNodeElement(selectedNodeFetchRequest))
193 export function setNotificationText(msgText, msgSeverity) {
194 if (msgText.length > 0) {
197 getSetGlobalMessageEvent(msgText, msgSeverity));
201 dispatch(getClearGlobalMessageEvent());