diff options
Diffstat (limited to 'src/app/tierSupport/TierSupportActions.js')
-rw-r--r-- | src/app/tierSupport/TierSupportActions.js | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/src/app/tierSupport/TierSupportActions.js b/src/app/tierSupport/TierSupportActions.js new file mode 100644 index 0000000..d6f5e5a --- /dev/null +++ b/src/app/tierSupport/TierSupportActions.js @@ -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()); + }; + } +} |