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
10 * http://www.apache.org/licenses/LICENSE-2.0
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
16 * ============LICENSE_END==========================================================================
19 import { combineActionHandler } from '../../../../framework/src/flux/middleware';
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';
26 declare module '../../../../framework/src/store/applicationStore' {
27 interface IApplicationStoreState {
28 linkCalculation: ICalculationsState;
32 type ICalculationsState = {
33 calculations:ILinkCalculationAppStateState
36 export type ILinkCalculationAppStateState= {
37 linkId: string | null,
51 polarization : string | null,
56 absorptionWater:number,
57 absorptionOxygen: number,
64 antennaGainList:string[],
67 systemOperatingMargin : number,
70 rxSensitivityA : string,
71 rxSensitivityB: string
74 const initialState: ILinkCalculationAppStateState ={
89 polarization : 'Horizontal',
105 systemOperatingMargin : 0,
114 export const LinkCalculationHandler: IActionHandler<ILinkCalculationAppStateState> = (state=initialState, action) => {
116 if(action instanceof UpdateLinkIdAction){
117 state = Object.assign({}, state, {linkId:action.linkId})
119 else if(action instanceof updateHideForm){
121 state = Object.assign({}, state, {formView:action.formView})
123 else if (action instanceof UpdateDistanceAction){
124 state = Object.assign({}, state, {distance:action.distance})
126 else if (action instanceof UpdateFrequencyAction){
127 state = Object.assign({}, state, {frequency:action.frequency})
129 else if (action instanceof UpdateFslCalculation){
130 state = Object.assign({}, state, {fsl:action.fsl})
132 else if (action instanceof UpdateLatLonAction){
133 state = Object.assign({}, state, {Lat1:action.Lat1, Lon1:action.Lon1, Lat2:action.Lat2, Lon2:action.Lon2})
135 else if (action instanceof UpdateRainAttAction){
136 state = Object.assign({}, state, {rainAtt:action.rainAtt})
138 else if (action instanceof UpdateRainValAction){
139 state = Object.assign({}, state, {rainVal:action.rainVal})
141 else if (action instanceof UpdateSiteAction){
142 state = Object.assign({}, state, {siteA:action.siteA, siteB:action.siteB})
144 else if(action instanceof isCalculationServerReachableAction){
145 state = Object.assign({}, state, { reachable: action.reachable });
147 else if (action instanceof UpdatePolAction){
148 state = Object.assign({}, state, {polarization: action.polarization})
150 else if (action instanceof updateAltitudeAction){
151 state = Object.assign({}, state, {amslA:action.amslA, amslB:action.amslA, aglA:action.aglA, aglB:action.aglB})
153 else if (action instanceof UpdateAbsorptionLossAction){
154 state = Object.assign({}, state, {absorptionOxygen:action.absorptionOxygen, absorptionWater:action.absorptionWater})
156 else if (action instanceof UpdateWorstMonthRainAction){
157 state = Object.assign({}, state, {month:action.month})
159 else if (action instanceof UpdateEIRPAction){
160 state = Object.assign({}, state, {eirpA:action.eirpA, eirpB:action.eirpB})
162 else if (action instanceof UpdateAntennaGainAction){
163 state = Object.assign({}, state, {antennaGainList:action.antennaGainList})
165 else if (action instanceof UpdateAntennaListAction){
166 state = Object.assign({}, state, {antennaList:action.antennaList})
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})
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})
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})
181 const actionHandlers = {
182 calculations: LinkCalculationHandler
185 export const LinkCalculationAppRootHandler = combineActionHandler<ICalculationsState>(actionHandlers);
186 export default LinkCalculationAppRootHandler;