Update ODLUX
[ccsdk/features.git] / sdnr / wt / odlux / apps / linkCalculationApp / src / handlers / linkCalculationAppRootHandler.ts
1 /**
2 * ============LICENSE_START========================================================================
3 * ONAP : ccsdk feature sdnr wt odlux
4 * =================================================================================================
5 * Copyright (C) 2020 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
19 import { combineActionHandler } from '../../../../framework/src/flux/middleware';
20
21 // ** do not remove **
22 import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
23 import { IActionHandler } from '../../../../framework/src/flux/action';;
24 import { UpdateLinkIdAction, UpdateFrequencyAction , UpdateLatLonAction, UpdateRainAttAction, UpdateRainValAction, updateHideForm, UpdateFslCalculation, UpdateSiteAction, UpdateDistanceAction, isCalculationServerReachableAction, UpdatePolAction, updateAltitudeAction, UpdateAbsorptionLossAction, UpdateWorstMonthRainAction, UpdateEIRPAction,  UpdateAntennaAction, UpdateAntennaListAction, UpdateAntennaGainAction, UpdateTxPowerAction, UpdateRxSensitivityAction} from '../actions/commonLinkCalculationActions';
25
26 declare module '../../../../framework/src/store/applicationStore' {
27   interface IApplicationStoreState {
28     linkCalculation: ICalculationsState;
29   }
30 }
31
32 type ICalculationsState = {
33   calculations:ILinkCalculationAppStateState
34 }
35
36 export type ILinkCalculationAppStateState= {
37   linkId: string | null,
38   frequency: number,
39   formView:boolean,
40   fsl:number,
41   distance:number,
42   Lat1: number,
43   Lon1: number,
44   Lat2: number, 
45   Lon2: number,
46   rainVal : number,
47   rainAtt : number,
48   siteA: string,
49   siteB: string,
50   reachable: boolean,
51   polarization : string | null,
52   amslA: number, 
53   amslB:number, 
54   aglA: number, 
55   aglB:number,
56   absorptionWater:number,
57   absorptionOxygen: number,
58   month: string, 
59   eirpA: number, 
60   eirpB: number, 
61   antennaGainA: number,
62   antennaGainB :number,
63   antennaList:string[],
64   antennaGainList:string[],
65   antennaA: string,
66   antennaB:string,
67   systemOperatingMargin : number,
68   txPowerA : string,
69   txPowerB: string,
70   rxSensitivityA : string,
71   rxSensitivityB: string
72 }
73
74 const initialState: ILinkCalculationAppStateState ={
75   linkId: null,
76   frequency: 0,
77   Lat1: 0,
78   Lon1: 0,
79   Lat2: 0,
80   Lon2: 0,
81   formView : false,
82   fsl:0,
83   distance:0,
84   siteA : '',
85   siteB: '',
86   rainVal : 0,
87   rainAtt: 0,
88   reachable : true,
89   polarization : 'Horizontal',
90   amslA: 0, 
91   amslB:0, 
92   aglA: 0, 
93   aglB:0,
94   absorptionWater:0,
95   absorptionOxygen: 0,
96   month: '', 
97   eirpA: 0, 
98   eirpB: 0, 
99   antennaGainA :0,
100   antennaGainB :0,
101   antennaList:[],
102   antennaGainList:[],
103   antennaA: '0',
104   antennaB:'0',
105   systemOperatingMargin : 0,
106   txPowerA : '0',
107   txPowerB: '0', 
108   rxSensitivityA: '0',
109   rxSensitivityB: '0'
110 }
111
112
113
114 export const LinkCalculationHandler: IActionHandler<ILinkCalculationAppStateState> = (state=initialState, action) => {
115     
116   if(action instanceof UpdateLinkIdAction){
117       state = Object.assign({}, state, {linkId:action.linkId})
118   } 
119   else if(action instanceof updateHideForm){
120
121     state = Object.assign({}, state, {formView:action.formView})
122   }
123   else if (action instanceof UpdateDistanceAction){
124     state = Object.assign({}, state, {distance:action.distance})
125   }
126   else if (action instanceof UpdateFrequencyAction){
127     state = Object.assign({}, state, {frequency:action.frequency})
128   }
129   else if (action instanceof UpdateFslCalculation){
130   state = Object.assign({}, state, {fsl:action.fsl})
131   }
132   else if (action instanceof UpdateLatLonAction){
133     state = Object.assign({}, state, {Lat1:action.Lat1, Lon1:action.Lon1, Lat2:action.Lat2, Lon2:action.Lon2})
134   }
135   else if (action instanceof UpdateRainAttAction){
136     state = Object.assign({}, state, {rainAtt:action.rainAtt})
137   }
138   else if (action instanceof UpdateRainValAction){
139     state = Object.assign({}, state, {rainVal:action.rainVal})
140   }
141   else if (action instanceof UpdateSiteAction){
142     state = Object.assign({}, state, {siteA:action.siteA, siteB:action.siteB})
143   }
144   else if(action instanceof isCalculationServerReachableAction){
145     state = Object.assign({}, state, { reachable: action.reachable });
146   }
147   else if (action instanceof UpdatePolAction){
148     state = Object.assign({}, state, {polarization: action.polarization})
149   }
150   else if (action instanceof updateAltitudeAction){
151     state = Object.assign({}, state, {amslA:action.amslA, amslB:action.amslA, aglA:action.aglA, aglB:action.aglB})
152   }
153   else if (action instanceof UpdateAbsorptionLossAction){
154     state = Object.assign({}, state, {absorptionOxygen:action.absorptionOxygen, absorptionWater:action.absorptionWater})
155   }
156   else if (action instanceof UpdateWorstMonthRainAction){
157     state = Object.assign({}, state, {month:action.month})
158   }
159   else if (action instanceof UpdateEIRPAction){
160     state = Object.assign({}, state, {eirpA:action.eirpA, eirpB:action.eirpB})
161   }
162   else if (action instanceof UpdateAntennaGainAction){
163     state = Object.assign({}, state, {antennaGainList:action.antennaGainList})
164   }
165   else if (action instanceof UpdateAntennaListAction){
166     state = Object.assign({}, state, {antennaList:action.antennaList})
167   }
168   else if (action instanceof UpdateAntennaAction){
169     state = Object.assign({}, state, {antennaA:action.antennaA == null ? state.antennaA : action.antennaA , antennaB: action.antennaB == null? state.antennaB : action.antennaB})
170   }
171   else if (action instanceof UpdateTxPowerAction){
172     state = Object.assign({}, state, {txPowerA:action.txPowerA == null ? state.txPowerA : action.txPowerA , txPowerB: action.txPowerB == null? state.txPowerB : action.txPowerB})
173   }
174   else if (action instanceof UpdateRxSensitivityAction){
175     state = Object.assign({}, state, {rxSensitivityA:action.rxSensitivityA == null ? state.rxSensitivityA : action.rxSensitivityA , rxSensitivityB: action.rxSensitivityB == null? state.rxSensitivityB : action.rxSensitivityB})
176   }
177
178   return state
179 }
180
181 const actionHandlers = {
182   calculations: LinkCalculationHandler
183 }
184
185 export const LinkCalculationAppRootHandler = combineActionHandler<ICalculationsState>(actionHandlers); 
186 export default LinkCalculationAppRootHandler;
187