summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/apps/networkMapApp/src/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/apps/networkMapApp/src/handlers')
-rw-r--r--sdnr/wt/odlux/apps/networkMapApp/src/handlers/connectivityReducer.ts38
-rw-r--r--sdnr/wt/odlux/apps/networkMapApp/src/handlers/detailsReducer.ts70
-rw-r--r--sdnr/wt/odlux/apps/networkMapApp/src/handlers/mapReducer.ts81
-rw-r--r--sdnr/wt/odlux/apps/networkMapApp/src/handlers/popupReducer.ts50
-rw-r--r--sdnr/wt/odlux/apps/networkMapApp/src/handlers/rootReducer.ts47
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