aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt-odlux/odlux/framework/src/handlers
diff options
context:
space:
mode:
authorRavi Pendurty <ravi.pendurty@highstreet-technologies.com>2023-12-07 22:45:28 +0530
committerRavi Pendurty <ravi.pendurty@highstreet-technologies.com>2023-12-07 22:46:39 +0530
commitdfd91573b7567e1dab482f17111ab8f809553d99 (patch)
tree8368580d1b1add9cfef5e8354ccf1080f27109b0 /sdnr/wt-odlux/odlux/framework/src/handlers
parentbf8d701f85d02a140a1290d288adc7f437c1cc90 (diff)
Create wt-odlux directory
Include odlux apps, helpserver and readthedocs Issue-ID: CCSDK-3970 Change-Id: I1aee1327e7da12e8f658185b9a985a5204ad6065 Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt-odlux/odlux/framework/src/handlers')
-rw-r--r--sdnr/wt-odlux/odlux/framework/src/handlers/applicationRegistryHandler.ts31
-rw-r--r--sdnr/wt-odlux/odlux/framework/src/handlers/applicationStateHandler.ts176
-rw-r--r--sdnr/wt-odlux/odlux/framework/src/handlers/authenticationHandler.ts59
-rw-r--r--sdnr/wt-odlux/odlux/framework/src/handlers/navigationStateHandler.ts45
4 files changed, 311 insertions, 0 deletions
diff --git a/sdnr/wt-odlux/odlux/framework/src/handlers/applicationRegistryHandler.ts b/sdnr/wt-odlux/odlux/framework/src/handlers/applicationRegistryHandler.ts
new file mode 100644
index 000000000..ec7b0a04a
--- /dev/null
+++ b/sdnr/wt-odlux/odlux/framework/src/handlers/applicationRegistryHandler.ts
@@ -0,0 +1,31 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2019 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 '../flux/action';
+
+import { ApplicationInfo } from '../models/applicationInfo';
+import { applicationManager } from '../services/applicationManager';
+
+export interface IApplicationRegistration {
+ [name: string]: ApplicationInfo;
+}
+
+const applicationRegistrationInit: IApplicationRegistration = applicationManager.applications;
+
+export const applicationRegistryHandler: IActionHandler<IApplicationRegistration> = (state = applicationRegistrationInit, action) => {
+ return state;
+};
diff --git a/sdnr/wt-odlux/odlux/framework/src/handlers/applicationStateHandler.ts b/sdnr/wt-odlux/odlux/framework/src/handlers/applicationStateHandler.ts
new file mode 100644
index 000000000..d0a07248d
--- /dev/null
+++ b/sdnr/wt-odlux/odlux/framework/src/handlers/applicationStateHandler.ts
@@ -0,0 +1,176 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2019 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 '../flux/action';
+
+import { SetTitleAction } from '../actions/titleActions';
+import { SetExternalLoginProviderAction } from '../actions/loginProvider';
+import { AddSnackbarNotification, RemoveSnackbarNotification } from '../actions/snackbarActions';
+import { AddErrorInfoAction, RemoveErrorInfoAction, ClearErrorInfoAction } from '../actions/errorActions';
+import { MenuAction, MenuClosedByUser } from '../actions/menuAction'
+import { SetWebsocketAction } from '../actions/websocketAction';
+
+import { IconType } from '../models/iconDefinition';
+import { ErrorInfo } from '../models/errorInfo';
+import { SnackbarItem } from '../models/snackbarItem';
+import { ExternalLoginProvider } from '../models/externalLoginProvider';
+import { ApplicationConfig } from '../models/applicationConfig';
+import { IConnectAppStoreState } from '../../../apps/connectApp/src/handlers/connectAppRootHandler';
+import { IFaultAppStoreState } from '../../../apps/faultApp/src/handlers/faultAppRootHandler';
+import { GeneralSettings, Settings } from '../models/settings';
+import { LoadSettingsAction, SetGeneralSettingsAction, SetTableSettings, SettingsDoneLoadingAction } from '../actions/settingsAction';
+import { startWebsocketSession, suspendWebsocketSession } from '../services/notificationService';
+
+
+declare module '../store/applicationStore' {
+ interface IApplicationStoreState {
+ connect: IConnectAppStoreState;
+ fault: IFaultAppStoreState
+ }
+}
+export interface IApplicationState {
+ title: string;
+ appId?: string;
+ icon?: IconType;
+ isMenuOpen: boolean;
+ isMenuClosedByUser: boolean;
+ errors: ErrorInfo[];
+ snackBars: SnackbarItem[];
+ isWebsocketAvailable: boolean | null;
+ externalLoginProviders: ExternalLoginProvider[] | null;
+ authentication: "basic"|"oauth", // basic
+ enablePolicy: boolean, // false
+ transportpceUrl : string,
+ settings: Settings & { isInitialLoadDone: boolean }
+}
+
+const applicationStateInit: IApplicationState = {
+ title: "Loading ...",
+ errors: [],
+ snackBars: [],
+ isMenuOpen: true,
+ isMenuClosedByUser: false,
+ isWebsocketAvailable: null,
+ externalLoginProviders: null,
+ authentication: "basic",
+ enablePolicy: false,
+ transportpceUrl: "",
+ settings:{
+ general: { areNotificationsEnabled: null },
+ tables: {},
+ isInitialLoadDone: false
+ }
+};
+
+export const configureApplication = (config: ApplicationConfig) => {
+ applicationStateInit.authentication = config.authentication === "oauth" ? "oauth" : "basic";
+ applicationStateInit.enablePolicy = config.enablePolicy ? true : false;
+ applicationStateInit.transportpceUrl=config.transportpceUrl == undefined ? "" : config.transportpceUrl;
+}
+
+export const applicationStateHandler: IActionHandler<IApplicationState> = (state = applicationStateInit, action) => {
+ if (action instanceof SetTitleAction) {
+ state = {
+ ...state,
+ title: action.title,
+ icon: action.icon,
+ appId: action.appId,
+ };
+ } else if (action instanceof AddErrorInfoAction) {
+ state = {
+ ...state,
+ errors: [
+ ...state.errors,
+ action.errorInfo,
+ ]
+ };
+ } else if (action instanceof RemoveErrorInfoAction) {
+ const index = state.errors.indexOf(action.errorInfo);
+ if (index > -1) {
+ state = {
+ ...state,
+ errors: [
+ ...state.errors.slice(0, index),
+ ...state.errors.slice(index + 1),
+ ]
+ };
+ }
+ } else if (action instanceof ClearErrorInfoAction) {
+ if (state.errors && state.errors.length) {
+ state = {
+ ...state,
+ errors: [],
+ };
+ }
+ } else if (action instanceof AddSnackbarNotification) {
+ state = {
+ ...state,
+ snackBars: [
+ ...state.snackBars,
+ action.notification,
+ ]
+ };
+ } else if (action instanceof RemoveSnackbarNotification) {
+ state = {
+ ...state,
+ snackBars: state.snackBars.filter(s => s.key !== action.key),
+ };
+ } else if (action instanceof MenuAction) {
+ state = {
+ ...state,
+ isMenuOpen: action.isOpen,
+ }
+ } else if (action instanceof MenuClosedByUser) {
+ state = {
+ ...state,
+ isMenuClosedByUser: action.isClosed,
+ }
+ }
+ else if (action instanceof SetWebsocketAction) {
+ state = {
+ ...state,
+ isWebsocketAvailable: action.isConnected,
+ }
+ } else if (action instanceof SetExternalLoginProviderAction){
+ state = {
+ ...state,
+ externalLoginProviders: action.externalLoginProvders,
+ }
+ }else if(action instanceof SetGeneralSettingsAction){
+
+ state = {
+ ...state,
+ settings:{tables: state.settings.tables, isInitialLoadDone:state.settings.isInitialLoadDone, general:{areNotificationsEnabled: action.areNoticationsActive}}
+ }
+ }
+ else if(action instanceof SetTableSettings){
+
+ let tableUpdate = state.settings.tables;
+ tableUpdate[action.tableName] = {columns: action.updatedColumns};
+
+ state = {...state, settings:{general: state.settings.general, isInitialLoadDone:state.settings.isInitialLoadDone, tables: tableUpdate}}
+
+ }else if(action instanceof LoadSettingsAction){
+
+ state = {...state, settings:action.settings}
+ }
+ else if(action instanceof SettingsDoneLoadingAction){
+ state= {...state, settings: {...state.settings, isInitialLoadDone: true}}
+ }
+
+ return state;
+};
diff --git a/sdnr/wt-odlux/odlux/framework/src/handlers/authenticationHandler.ts b/sdnr/wt-odlux/odlux/framework/src/handlers/authenticationHandler.ts
new file mode 100644
index 000000000..3a4891c98
--- /dev/null
+++ b/sdnr/wt-odlux/odlux/framework/src/handlers/authenticationHandler.ts
@@ -0,0 +1,59 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2019 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 '../flux/action';
+import { UpdatePolicies, UpdateUser } from '../actions/authentication';
+
+import { AuthPolicy, User } from '../models/authentication';
+
+import { onLogin, onLogout } from '../services/applicationApi';
+import { startWebsocketSession, endWebsocketSession } from '../services/notificationService';
+import { startUserSession, endUserSession } from '../services/userSessionService';
+import { getUserData } from '../services/userdataService';
+
+export interface IAuthenticationState {
+ user?: User;
+ policies?: AuthPolicy[];
+}
+
+const authenticationStateInit: IAuthenticationState = {
+ user: undefined
+};
+
+export const authenticationStateHandler: IActionHandler<IAuthenticationState> = (state = authenticationStateInit, action) => {
+ if (action instanceof UpdateUser) {
+ const {user} = action;
+
+ if (user) {
+ onLogin();
+ } else {
+ onLogout();
+ }
+
+ state = {
+ ...state,
+ user,
+ };
+ } else if (action instanceof UpdatePolicies) {
+ state = {
+ ...state,
+ policies: action.authPolicies,
+ };
+ }
+ return state;
+};
+
diff --git a/sdnr/wt-odlux/odlux/framework/src/handlers/navigationStateHandler.ts b/sdnr/wt-odlux/odlux/framework/src/handlers/navigationStateHandler.ts
new file mode 100644
index 000000000..6ecdf2f79
--- /dev/null
+++ b/sdnr/wt-odlux/odlux/framework/src/handlers/navigationStateHandler.ts
@@ -0,0 +1,45 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2019 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 '../flux/action';
+import { LocationChanged } from '../actions/navigationActions';
+
+
+export interface INavigationState {
+ pathname: string;
+ search: string;
+ hash: string;
+}
+
+const navigationStateInit: INavigationState = {
+ pathname: '/',
+ search: '',
+ hash: '',
+};
+
+
+export const navigationStateHandler: IActionHandler<INavigationState> = (state = navigationStateInit, action) => {
+ if (action instanceof LocationChanged) {
+ state = {
+ ...state,
+ pathname: action.pathname,
+ search: action.search,
+ hash: action.hash
+ }
+ }
+ return state;
+} \ No newline at end of file