FarmMapsLib/projects/common/src/fm/reducers/app-common.reducer.ts

234 lines
10 KiB
TypeScript
Raw Normal View History

2020-01-07 15:33:56 +00:00
import { tassign } from 'tassign';
import { IItemTypes} from '../models/item.types';
import { IListItem } from '../models/list.item';
import { IUser } from '../models/user';
2022-03-16 13:20:28 +00:00
import { IPackage,IPackageMap,IPackages} from '../models/package';
2020-01-07 15:33:56 +00:00
import * as appCommonActions from '../actions/app-common.actions';
import { createSelector, createFeatureSelector, ActionReducerMap } from '@ngrx/store';
import { MODULE_NAME } from '../module-name';
2020-08-13 11:06:28 +00:00
import { IItem } from '../models/item';
2022-01-31 20:38:23 +00:00
import {getValidPackages, isValidPackage} from '../services/package.service';
2020-01-07 15:33:56 +00:00
export interface State {
openedModalName: string,
initialized: boolean,
rootItems: IListItem[],
itemTypes: IItemTypes,
user:IUser,
fullScreen: boolean,
routeLoading:boolean,
menuVisible: boolean,
2020-06-24 11:08:13 +00:00
userPackages: IPackages,
2022-03-16 13:20:28 +00:00
packages: IPackageMap,
2020-08-13 11:06:28 +00:00
userSettingsRoot: IItem,
accountMenuVisible: boolean,
2020-12-09 20:45:38 +00:00
appMenuVisible: boolean,
2021-02-11 10:44:34 +00:00
notificationMenuVisible: boolean,
2021-02-16 15:49:23 +00:00
helpMenuVisible: boolean,
2021-02-11 10:44:34 +00:00
unreadNotifications: number,
2020-10-29 18:14:06 +00:00
isOnline: boolean,
isPageMode:boolean
2020-01-07 15:33:56 +00:00
}
export const initialState: State = {
openedModalName: null,
initialized: false,
rootItems: [],
itemTypes: {},
user:null,
fullScreen: true,
routeLoading: false,
2020-05-13 10:30:09 +00:00
menuVisible: false,
2020-06-24 13:07:11 +00:00
userPackages: {},
2022-03-16 13:20:28 +00:00
packages: {},
2020-08-13 11:06:28 +00:00
userSettingsRoot: null,
accountMenuVisible: false,
2020-12-09 20:45:38 +00:00
appMenuVisible: false,
2021-02-11 10:44:34 +00:00
notificationMenuVisible: false,
2021-02-16 15:49:23 +00:00
helpMenuVisible: false,
2021-02-11 10:44:34 +00:00
unreadNotifications: 0,
2020-10-29 18:14:06 +00:00
isOnline: true,
isPageMode: true
2020-01-07 15:33:56 +00:00
}
export function reducer(state = initialState, action: appCommonActions.Actions ): State {
switch (action.type) {
2020-07-23 07:42:44 +00:00
case appCommonActions.INITUSER: {
return tassign(state,{initialized: true});
}
2020-01-07 15:33:56 +00:00
case appCommonActions.INITUSERSUCCESS: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.InitUserSuccess;
const claims = { ...a.userinfo.info };
const user:IUser = {
code:a.user.code,
email:claims["email"]!== undefined ? claims["email"] : a.user.name,
name:claims["name"]!== undefined?claims["name"] : a.user.email,
2021-02-03 08:13:08 +00:00
claims:claims,
searchable: false
2022-01-31 20:38:23 +00:00
};
2020-07-23 07:42:44 +00:00
return tassign(state, { user: user });
2020-01-07 15:33:56 +00:00
}
case appCommonActions.INITROOTSUCCESS: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.InitRootSuccess;
2020-01-07 15:33:56 +00:00
return tassign(state, { rootItems:a.items});
}
case appCommonActions.OPENMODAL: {
return tassign(state, { openedModalName: action.modalName });
2022-01-31 20:38:23 +00:00
}
2020-01-07 15:33:56 +00:00
case appCommonActions.CLOSEMODAL: {
return tassign(state, { openedModalName: null });
2022-01-31 20:38:23 +00:00
}
2020-01-07 15:33:56 +00:00
case appCommonActions.LOADITEMTYPESSUCCESS: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.LoadItemTypesSuccess;
2020-01-07 15:33:56 +00:00
return tassign(state, { itemTypes: a.itemTypes });
}
case appCommonActions.FULLSCREEN: {
return tassign(state, {
fullScreen:true
});
}
case appCommonActions.SHOWNAVBAR: {
return tassign(state, {
fullScreen: false
});
}
case appCommonActions.STARTROUTELOADING: {
return tassign(state, {
routeLoading: true
});
}
case appCommonActions.ENDROUTELOADING: {
return tassign(state, {
routeLoading: false
});
}
case appCommonActions.TOGGLEMENU: {
2021-02-16 15:49:23 +00:00
return tassign(state, { menuVisible: !state.menuVisible,accountMenuVisible:!state.menuVisible?false:state.accountMenuVisible,appMenuVisible:!state.menuVisible?false:state.appMenuVisible,notificationMenuVisible:!state.menuVisible?false:state.notificationMenuVisible,helpMenuVisible:!state.menuVisible?false:state.helpMenuVisible });
2020-01-07 15:33:56 +00:00
}
2020-06-24 13:07:11 +00:00
case appCommonActions.TOGGLEACCOUNTMENU: {
2021-02-16 15:49:23 +00:00
return tassign(state, { accountMenuVisible: !state.accountMenuVisible,appMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false });
2020-12-09 20:45:38 +00:00
}
case appCommonActions.TOGGLEAPPMENU: {
2021-02-16 15:49:23 +00:00
return tassign(state, { appMenuVisible: !state.appMenuVisible,accountMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false });
2021-02-11 10:44:34 +00:00
}
case appCommonActions.TOGGLENOTIFICATIONMENU: {
2021-02-16 15:49:23 +00:00
return tassign(state, { notificationMenuVisible : !state.notificationMenuVisible,accountMenuVisible:false,appMenuVisible:false,helpMenuVisible:false });
}
case appCommonActions.TOGGLEHELPMENU: {
return tassign(state, { helpMenuVisible : !state.helpMenuVisible,accountMenuVisible:false,appMenuVisible:false,notificationMenuVisible:false });
2020-06-24 13:07:11 +00:00
}
2020-01-07 20:43:48 +00:00
case appCommonActions.ESCAPE: {
2021-02-16 15:49:23 +00:00
return tassign(state, { menuVisible: false,accountMenuVisible:false,appMenuVisible: false,notificationMenuVisible:false,helpMenuVisible:false });
2020-01-07 20:43:48 +00:00
}
case appCommonActions.SETMENUVISIBLE: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.SetMenuVisible;
2021-02-16 15:49:23 +00:00
return tassign(state, { menuVisible: a.visible,accountMenuVisible:a.visible?false:state.accountMenuVisible,appMenuVisible:a.visible?false:state.appMenuVisible,notificationMenuVisible:a.visible?false:state.notificationMenuVisible,helpMenuVisible:a.visible?false:state.helpMenuVisible });
2020-01-07 20:43:48 +00:00
}
2020-05-13 10:30:09 +00:00
case appCommonActions.INITUSERPACKAGESSUCCESS:{
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.InitUserPackagesSuccess;
const packages = {}
2020-05-13 10:30:09 +00:00
a.items.forEach((item) => {
2021-01-18 14:21:34 +00:00
item.data.dataDate = item.dataDate;
item.data.dataEndDate = item.dataEndDate;
2022-01-31 20:38:23 +00:00
if (!packages[item.data.id]) {
packages[item.data.id] = [];
}
packages[item.data.id].push(item.data);
2020-05-13 10:30:09 +00:00
});
return tassign(state,{userPackages:packages});
}
2022-03-16 13:20:28 +00:00
case appCommonActions.INITPACKAGESSUCCESS:{
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.InitPackagesSuccess;
const packages = {}
2022-03-16 13:20:28 +00:00
a.items.forEach((item) => {
packages[item.data.id] = item.data;
});
return tassign(state,{packages:packages});
}
2020-08-13 11:06:28 +00:00
case appCommonActions.INITUSERSETTINGSROOTSUCCESS:{
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.InitUserSettingsRootSuccess;
2020-08-13 11:06:28 +00:00
return tassign(state, { userSettingsRoot : a.item });
}
2020-06-25 16:52:13 +00:00
case appCommonActions.LOGOUT:{
2020-06-25 17:04:40 +00:00
return tassign(state,{user:null,initialized:false});
2020-06-25 16:52:13 +00:00
}
2020-06-26 06:22:31 +00:00
case appCommonActions.CLOSEALL: {
2020-12-09 20:45:38 +00:00
return tassign(state,{accountMenuVisible:false,appMenuVisible:false, menuVisible:false });
2020-06-26 06:22:31 +00:00
}
case appCommonActions.ONLINE:{
return tassign(state,{isOnline:true});
}
case appCommonActions.OFFLINE:{
return tassign(state,{isOnline:false});
}
2020-10-29 18:14:06 +00:00
case appCommonActions.SETPAGEMODE: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.SetPageMode;
2020-10-29 18:14:06 +00:00
return tassign(state,{isPageMode:a.pageMode});
}
2021-02-11 10:44:34 +00:00
case appCommonActions.NOTIFICATIONEVENT: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.NotificationEvent;
2021-02-11 10:44:34 +00:00
let unread = 0;
if(a.attributes["unread"]) {
unread = parseInt(a.attributes["unread"]);
}
return tassign(state,{unreadNotifications:unread});
}
2021-03-08 07:45:13 +00:00
case appCommonActions.SETUNREADNOTIFICATIONS: {
2023-03-06 13:04:14 +00:00
const a = action as appCommonActions.SetUnreadNotifications;
2021-03-08 07:45:13 +00:00
return tassign(state,{unreadNotifications:a.unread});
}
2020-01-07 15:33:56 +00:00
default: {
return state;
}
}
}
export const getOpenedModalName = (state: State) => state.openedModalName;
export const getInitialized = (state: State) => state.initialized;
export const getItemTypes = (state: State) => state.itemTypes;
export const getRootItems = (state: State) => state.rootItems;
export const getFullScreen = (state: State) => state.fullScreen;
export const getRouteLoading = (state: State) => state.routeLoading;
export const getMenuVisible = (state: State) => state.menuVisible;
2020-05-04 12:47:04 +00:00
export const getUser = (state: State) => state.user;
2020-05-13 10:30:09 +00:00
export const getUserPackages = (state: State) => state.userPackages;
2022-03-16 13:20:28 +00:00
export const getPackages = (state: State) => state.packages;
2020-08-13 13:28:30 +00:00
export const getUserSettingsRoot = (state: State) => state.userSettingsRoot;
2020-06-24 13:07:11 +00:00
export const getAccountMenuVisible = (state: State) => state.accountMenuVisible;
2020-12-09 20:45:38 +00:00
export const getAppMenuVisible = (state: State) => state.appMenuVisible;
2021-02-11 10:44:34 +00:00
export const getNotificationMenuVisible = (state: State) => state.notificationMenuVisible;
2021-02-16 15:49:23 +00:00
export const getHelpMenuVisible = (state: State) => state.helpMenuVisible;
2021-02-11 10:44:34 +00:00
export const getUnreadNotifications = (state: State) => state.unreadNotifications;
export const getIsOnline = (state: State) => state.isOnline;
2020-10-29 18:14:06 +00:00
export const getIsPageMode = (state: State) => state.isPageMode;
2020-01-07 15:33:56 +00:00
export const selectAppCommonState = createFeatureSelector<State>(MODULE_NAME);
export const selectOpenedModalName = createSelector(selectAppCommonState, getOpenedModalName);
export const selectGetInitialized = createSelector(selectAppCommonState, getInitialized);
export const selectGetItemTypes = createSelector(selectAppCommonState, getItemTypes);
export const selectGetRootItems = createSelector(selectAppCommonState, getRootItems);
export const selectGetFullScreen = createSelector(selectAppCommonState, getFullScreen);
export const selectGetRouteLoading = createSelector(selectAppCommonState, getRouteLoading);
export const SelectGetMenuVisible = createSelector(selectAppCommonState,getMenuVisible);
2020-05-04 12:47:04 +00:00
export const SelectGetUser = createSelector(selectAppCommonState,getUser);
2020-08-13 13:47:04 +00:00
export const SelectGetUserPackages = createSelector(selectAppCommonState,getUserPackages);
2022-03-16 13:20:28 +00:00
export const SelectGetPackages = createSelector(selectAppCommonState,getPackages);
2022-01-31 20:38:23 +00:00
export const SelectGetValidUserPackages = createSelector(SelectGetUserPackages, (packageMap) => {
return getValidPackages(packageMap);
});
2020-08-13 13:28:30 +00:00
export const SelectGetUserSettingsRoot = createSelector(selectAppCommonState,getUserSettingsRoot);
2020-06-24 13:07:11 +00:00
export const SelectGetAccountMenuVisible = createSelector(selectAppCommonState,getAccountMenuVisible);
2020-12-09 20:45:38 +00:00
export const SelectGetAppMenuVisible = createSelector(selectAppCommonState,getAppMenuVisible);
2021-02-11 10:44:34 +00:00
export const SelectGetNotificationMenuVisible = createSelector(selectAppCommonState,getNotificationMenuVisible);
2021-02-16 15:49:23 +00:00
export const SelectGetHelpMenuVisible = createSelector(selectAppCommonState,getHelpMenuVisible);
2021-02-11 10:44:34 +00:00
export const SelectgetUnreadNotifications = createSelector(selectAppCommonState,getUnreadNotifications);
export const SelectGetIsOnline = createSelector(selectAppCommonState,getIsOnline);
2020-10-29 18:14:06 +00:00
export const SelectGetIsPageMode = createSelector(selectAppCommonState,getIsPageMode);
2020-01-07 15:33:56 +00:00
2022-01-31 20:38:23 +00:00