From 3d202a04b99f0e61b6ccf8b7a5610e1a15ca58e7 Mon Sep 17 00:00:00 2001
From: Herbert Eiselt <herbert.eiselt@highstreet-technologies.com>
Date: Mon, 11 Feb 2019 14:54:12 +0100
Subject: Add sdnr wt odlux

Add complete sdnr wireless transport app odlux core and apps

Change-Id: I5dcbfb8f3b790e3bda7c8df67bd69d81958f65e5
Issue-ID: SDNC-576
Signed-off-by: Herbert Eiselt <herbert.eiselt@highstreet-technologies.com>
---
 .../src/handlers/mountedNetworkElementsHandler.tsx | 81 ++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100644 sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx

(limited to 'sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx')

diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx
new file mode 100644
index 000000000..70b4d8f2a
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx
@@ -0,0 +1,81 @@
+import { IActionHandler } from '../../../../framework/src/flux/action';
+
+import {
+  AddMountedNetworkElement,
+  AllMountedNetworkElementsLoadedAction,
+  LoadAllMountedNetworkElementsAction,
+  RemoveMountedNetworkElement,
+  UpdateConnectionStateMountedNetworkElement,
+  UpdateRequiredMountedNetworkElement
+} from '../actions/mountedNetworkElementsActions';
+
+import { MountedNetworkElementType } from '../models/mountedNetworkElements';
+
+export interface IMountedNetworkElementsState {
+  elements: MountedNetworkElementType[];
+  busy: boolean;
+}
+
+const mountedNetworkElementsStateInit: IMountedNetworkElementsState = {
+  elements: [],
+  busy: false
+};
+
+export const mountedNetworkElementsActionHandler: IActionHandler<IMountedNetworkElementsState> = (state = mountedNetworkElementsStateInit, action) => {
+  if (action instanceof LoadAllMountedNetworkElementsAction) {
+
+    state = {
+      ...state,
+      busy: true
+    };
+  
+  } else if (action instanceof AllMountedNetworkElementsLoadedAction) {
+    if (!action.error && action.mountedNetworkElements) {
+      state = {
+        ...state,
+        elements: action.mountedNetworkElements,
+        busy: false
+      };
+    } else {
+      state = {
+        ...state,
+        busy: false
+      };
+    }
+  } else if (action instanceof AddMountedNetworkElement) {
+    action.mountedNetworkElement && (state = {
+      ...state,
+      elements: [...state.elements, action.mountedNetworkElement],
+    });
+  } else if (action instanceof RemoveMountedNetworkElement) {
+    state = {
+      ...state,
+      elements: state.elements.filter(e => e.mountId !== action.mountId),
+    };
+  } else if (action instanceof UpdateConnectionStateMountedNetworkElement) {
+    const index = state.elements.findIndex(el => el.mountId === action.mountId);
+    if (index > -1) {
+      state = {
+        ...state,
+        elements: [
+          ...state.elements.slice(0, index),
+          { ...state.elements[index], connectionStatus: action.mountId },
+          ...state.elements.slice(index + 1)
+        ]
+      }
+    }
+  } else if (action instanceof UpdateRequiredMountedNetworkElement) {
+    const index = state.elements.findIndex(el => el.mountId === action.mountId);
+    if (index > -1 && (state.elements[index].required !== action.required)) {
+      state = {
+        ...state,
+        elements: [
+          ...state.elements.slice(0, index),
+          { ...state.elements[index], required: action.required },
+          ...state.elements.slice(index + 1)
+        ]
+      }
+    }
+  };
+  return state;
+};
\ No newline at end of file
-- 
cgit 1.2.3-korg

