summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/apps/connectApp/src/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/apps/connectApp/src/handlers')
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx26
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx30
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx81
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx18
4 files changed, 155 insertions, 0 deletions
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx
new file mode 100644
index 000000000..26d02c4e9
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx
@@ -0,0 +1,26 @@
+import { combineActionHandler } from '../../../../framework/src/flux/middleware';
+import { IRequiredNetworkElementsState, requiredNetworkElementsActionHandler } from './requiredNetworkElementsHandler';
+import { IMountedNetworkElementsState, mountedNetworkElementsActionHandler } from './mountedNetworkElementsHandler';
+import { IConnectionStatusLogState, connectionStatusLogActionHandler } from './connectionStatusLogHandler';
+
+export interface IConnectAppStoreState {
+
+ requiredNetworkElements: IRequiredNetworkElementsState;
+ mountedNetworkElements: IMountedNetworkElementsState;
+ connectionStatusLog: IConnectionStatusLogState;
+}
+
+declare module '../../../../framework/src/store/applicationStore' {
+ interface IApplicationStoreState {
+ connectApp: IConnectAppStoreState
+ }
+}
+
+const actionHandlers = {
+ requiredNetworkElements: requiredNetworkElementsActionHandler,
+ mountedNetworkElements: mountedNetworkElementsActionHandler,
+ connectionStatusLog: connectionStatusLogActionHandler
+};
+
+export const connectAppRootHandler = combineActionHandler <IConnectAppStoreState>(actionHandlers);
+export default connectAppRootHandler;
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx
new file mode 100644
index 000000000..140020eaa
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx
@@ -0,0 +1,30 @@
+import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
+import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
+
+import { ConnectionStatusLogType } from '../models/connectionStatusLog';
+export interface IConnectionStatusLogState extends IExternalTableState<ConnectionStatusLogType> { }
+
+// create eleactic search material data fetch handler
+const connectionStatusLogSearchHandler = createSearchDataHandler<{ event: ConnectionStatusLogType }, ConnectionStatusLogType>('sdnevents_v1/eventlog', null,
+ (event) => ({
+ _id: event._id,
+ timeStamp: event._source.event.timeStamp,
+ objectId: event._source.event.objectId,
+ type: event._source.event.type,
+ elementStatus: event._source.event.type === 'ObjectCreationNotificationXml'
+ ? 'connected'
+ : event._source.event.type === 'ObjectDeletionNotificationXml'
+ ? 'disconnected'
+ : 'unknown'
+ }),
+ (name) => `event.${ name }`);
+
+export const {
+ actionHandler: connectionStatusLogActionHandler,
+ createActions: createConnectionStatusLogActions,
+ createProperties: createConnectionStatusLogProperties,
+ reloadAction: connectionStatusLogReloadAction,
+
+ // set value action, to change a value
+} = createExternal<ConnectionStatusLogType>(connectionStatusLogSearchHandler, appState => appState.connectApp.connectionStatusLog);
+
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
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx
new file mode 100644
index 000000000..b2d547717
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx
@@ -0,0 +1,18 @@
+import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
+import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
+
+import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
+export interface IRequiredNetworkElementsState extends IExternalTableState<RequiredNetworkElementType> { }
+
+// create eleactic search material data fetch handler
+const requiredNetworkElementsSearchHandler = createSearchDataHandler<RequiredNetworkElementType>('mwtn/required-networkelement');
+
+export const {
+ actionHandler: requiredNetworkElementsActionHandler,
+ createActions: createRequiredNetworkElementsActions,
+ createProperties: createRequiredNetworkElementsProperties,
+ reloadAction: requiredNetworkElementsReloadAction,
+
+ // set value action, to change a value
+} = createExternal<RequiredNetworkElementType>(requiredNetworkElementsSearchHandler, appState => appState.connectApp.requiredNetworkElements);
+