Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / apps / connectApp / src / handlers / infoNetworkElementHandler.ts
1 /**
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt odlux
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 import { IActionHandler } from '../../../../framework/src/flux/action';
19
20 import { AllElementInfoFeatureLoadedAction, AllElementInfoLoadedAction, LoadAllElementInfoAction } from '../actions/infoNetworkElementActions';
21 import { Module, TopologyNode } from '../models/topologyNetconf';
22  
23 export interface IInfoNetworkElementsState {
24   elementInfo: TopologyNode;
25   busy: boolean;
26 }
27  
28 export interface IInfoNetworkElementFeaturesState {
29   elementFeatureInfo: Module[];
30   busy: boolean;
31 }
32  
33 const infoNetworkElementsStateInit: IInfoNetworkElementsState = {
34   elementInfo: {
35     'node-id': '',
36     'netconf-node-topology:available-capabilities': {
37       'available-capability': [],
38     },
39   },
40   busy: false,
41 };
42  
43 const infoNetworkElementFeaturesStateInit: IInfoNetworkElementFeaturesState = {
44   elementFeatureInfo: [],
45   busy: false,
46 };
47  
48 export const infoNetworkElementsActionHandler: IActionHandler<IInfoNetworkElementsState> = (state = infoNetworkElementsStateInit, action) => {
49   if (action instanceof LoadAllElementInfoAction) {
50     state = {
51       ...state,
52       busy: true,
53     };
54   } else if (action instanceof AllElementInfoLoadedAction) {
55     if (!action.error && action.elementInfo) {
56       state = {
57         ...state,
58         elementInfo: action.elementInfo,
59         busy: false,
60       };
61     } else {
62       state = {
63         ...state,
64         busy: false,
65       };
66     }
67   }
68   return state;
69 };
70  
71 export const infoNetworkElementFeaturesActionHandler: IActionHandler<IInfoNetworkElementFeaturesState> = (state = infoNetworkElementFeaturesStateInit, action) => {
72   if (action instanceof LoadAllElementInfoAction) {
73     state = {
74       ...state,
75       busy: true,
76     };
77   } else if (action instanceof AllElementInfoFeatureLoadedAction) {
78     if (!action.error && action.elementFeatureInfo) {
79       state = {
80         ...state,
81         elementFeatureInfo: action.elementFeatureInfo,
82         busy: false,
83       };
84     } else {
85       state = {
86         ...state,
87         busy: false,
88       };
89     }
90   }
91   return state;
92 };