diff options
Diffstat (limited to 'sdnr/wt/odlux/apps/networkMapApp/src/handlers')
5 files changed, 286 insertions, 0 deletions
diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/handlers/connectivityReducer.ts b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/connectivityReducer.ts new file mode 100644 index 000000000..7214705e1 --- /dev/null +++ b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/connectivityReducer.ts @@ -0,0 +1,38 @@ +/** + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt odlux + * ================================================================================================= + * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. 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========================================================================== + */ + +import { IActionHandler } from "../../../../framework/src/flux/action"; +import { IsTopologyServerReachableAction, IsTileServerReachableAction } from "../actions/connectivityAction"; + + +export type connectivityState = {isToplogyServerAvailable: boolean, isTileServerAvailable: boolean }; + +const initialState: connectivityState = {isToplogyServerAvailable: true, isTileServerAvailable: true}; + +export const ConnectivityReducer: IActionHandler<connectivityState> =(state=initialState, action)=> { + + if(action instanceof IsTopologyServerReachableAction){ + state = Object.assign({}, state, { isToplogyServerAvailable: action.reachable }); + } + else if (action instanceof IsTileServerReachableAction){ + state = Object.assign({}, state, { isTileServerAvailable: action.reachable }); + + } + + return state; +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/handlers/detailsReducer.ts b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/detailsReducer.ts new file mode 100644 index 000000000..f573009bd --- /dev/null +++ b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/detailsReducer.ts @@ -0,0 +1,70 @@ +/** + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt odlux + * ================================================================================================= + * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. 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========================================================================== + */ + +import { IActionHandler } from '../../../../framework/src/flux/action'; +import { link } from "../model/link"; +import { site, Device } from "../model/site"; +import { HistoryEntry } from "../model/historyEntry"; +import { SelectSiteAction, SelectLinkAction, AddToHistoryAction, ClearHistoryAction, IsBusyCheckingDeviceListAction, FinishedLoadingDeviceListAction, ClearLoadedDevicesAction, ClearDetailsAction } from '../actions/detailsAction'; + +export type DetailsStoreState={ + data: site | link | null, + history: HistoryEntry[], + isBusyCheckingDeviceList: boolean, + checkedDevices: Device[] | null + +} + +const initialState: DetailsStoreState = { + data: null, + history:[], + isBusyCheckingDeviceList: false, + checkedDevices: null +} + +export const DetailsReducer:IActionHandler<DetailsStoreState>=(state = initialState, action)=>{ + + if(action instanceof SelectSiteAction){ + state= Object.assign({}, state, {data: action.site}); + } + else if(action instanceof SelectLinkAction){ + state = Object.assign({}, state, {data: action.link}); + }else if(action instanceof ClearDetailsAction){ + state = Object.assign({}, state, {data: null}); + } + else if(action instanceof AddToHistoryAction){ + state = Object.assign({}, state, {history: [...state.history, action.entry]}) + + }else if(action instanceof ClearHistoryAction){ + state = Object.assign({}, state, {history: []}); + + }else if(action instanceof IsBusyCheckingDeviceListAction){ + state = Object.assign({}, state, {isBusyCheckingDeviceList: action.isBusy}); + }else if (action instanceof FinishedLoadingDeviceListAction){ + state = Object.assign({}, state, {checkedDevices: action.devices}); + + }else if(action instanceof ClearLoadedDevicesAction){ + state = Object.assign({}, state, {checkedDevices: null}); + + } + + + return state; + +} + diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/handlers/mapReducer.ts b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/mapReducer.ts new file mode 100644 index 000000000..a140e9b77 --- /dev/null +++ b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/mapReducer.ts @@ -0,0 +1,81 @@ +/** + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt odlux + * ================================================================================================= + * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. 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========================================================================== + */ + +import { IActionHandler } from '../../../../framework/src/flux/action'; +import { Feature } from "../model/Feature"; +import { HighlightLinkAction, HighlightSiteAction, ZoomToSearchResultAction, AddAlarmAction, SetCoordinatesAction, SetStatistics, SetIconSwitchAction, RemoveHighlightingAction } from '../actions/mapActions'; + +export type location = {lat: number, lon:number} + +export type mapState = { + selectedLink: Feature | null, + selectedSite: Feature | null, + zoomToElement: location | null, + alarmlement: Feature|null, + lat: number, + lon: number, + zoom: number, + statistics:{links: string, sites: string}, + allowIconSwitch: boolean +} + +const initialState: mapState ={ + selectedLink: null, + selectedSite: null, + zoomToElement: null, + alarmlement: null, + lat: 52, + lon: 13, + zoom: 10, + statistics:{links:"Not counted yet.", sites: "Not counted yet."}, + allowIconSwitch: true +} + +export const MapReducer: IActionHandler<mapState> = (state=initialState, action: any) => { + + if(action instanceof HighlightLinkAction){ + + state = Object.assign({}, state, {selectedSite: null, selectedLink:{type: "Feature", geometry:{type:"LineString", coordinates:[[action.link.locationA.lon,action.link.locationA.lat ],[action.link.locationB.lon,action.link.locationB.lat ]]}}}) + + + } + else if(action instanceof HighlightSiteAction){ + + state = Object.assign({}, state, {selectedLink: null, selectedSite:{type: "Feature", properties: {id: action.site.name, type:action.site.type}, geometry:{type:"Point", coordinates:[action.site.geoLocation.lon,action.site.geoLocation.lat ]}}}) + + }else if (action instanceof ZoomToSearchResultAction){ + state = Object.assign({}, state, {zoomToElement:{lat: action.lat, lon: action.lon}}); + }else if (action instanceof AddAlarmAction){ + state = Object.assign({}, state, {alarmlement:action.element}); + + }else if(action instanceof SetCoordinatesAction){ + state = Object.assign({}, state, {lat:action.lat, lon: action.lon, zoom:action.zoom}); + + }else if(action instanceof SetStatistics){ + state = Object.assign({}, state, {statistics:{sites: action.siteCount, links: action.linkCount}}); + + }else if (action instanceof SetIconSwitchAction){ + state = Object.assign({}, state, {allowIconSwitch: action.enable}); + + }else if(action instanceof RemoveHighlightingAction){ + state = Object.assign({}, state, {selectedLink: null, selectedSite:null}) + + } + + return state; +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/handlers/popupReducer.ts b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/popupReducer.ts new file mode 100644 index 000000000..dcac9c9c2 --- /dev/null +++ b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/popupReducer.ts @@ -0,0 +1,50 @@ +/** + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt odlux + * ================================================================================================= + * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. 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========================================================================== + */ + +import { IActionHandler } from '../../../../framework/src/flux/action'; +import { SelectMultipleLinksAction, SelectMultipleSitesAction, SetPopupPositionAction } from "../actions/popupActions"; + +export type popupStoreState = { + selectionPendingForIds: string[], + pendingDataType: "link"|"site"| "", + position: { top: number, left: number } +}; + +const initialState: popupStoreState = { + selectionPendingForIds: [], + pendingDataType: "", + position: { top: 0, left: 0 } +}; + +export const PopupsReducer: IActionHandler<popupStoreState> = (state = initialState, action) => { + + if(action instanceof SelectMultipleLinksAction){ + state = Object.assign({}, state, { selectionPendingForIds: action.ids, pendingDataType: "link", isSelectionNeeded: true }); + + }else if(action instanceof SelectMultipleSitesAction){ + state = Object.assign({}, state, { selectionPendingForIds: action.ids, pendingDataType: "site", isSelectionNeeded: true }); + + }else if(action instanceof SetPopupPositionAction){ + state= Object.assign({}, state, {position:{top:action.top, left: action.left}}) + + } + + + return state; + +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/handlers/rootReducer.ts b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/rootReducer.ts new file mode 100644 index 000000000..4069ed24d --- /dev/null +++ b/sdnr/wt/odlux/apps/networkMapApp/src/handlers/rootReducer.ts @@ -0,0 +1,47 @@ +/** + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt odlux + * ================================================================================================= + * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. 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========================================================================== + */ + +import { combineActionHandler } from '../../../../framework/src/flux/middleware'; + +import { DetailsReducer, DetailsStoreState } from "./detailsReducer"; +import { PopupsReducer, popupStoreState } from "./popupReducer"; +import { MapReducer, mapState } from "./mapReducer"; +import { connectivityState, ConnectivityReducer } from './connectivityReducer'; + +export interface INetworkAppStoreState{ + details: DetailsStoreState, + popup: popupStoreState, + map: mapState, + connectivity: connectivityState +} + +declare module '../../../../framework/src/store/applicationStore' { + interface IApplicationStoreState { + network: INetworkAppStoreState + } + } + +const appHandler = { + details: DetailsReducer, + popup: PopupsReducer, + map: MapReducer, + connectivity: ConnectivityReducer}; + +export const networkmapRootHandler = combineActionHandler<INetworkAppStoreState>(appHandler) + +export default networkmapRootHandler;
\ No newline at end of file |