Extend Modern UI for pnf usecase
[vid.git] / vid-webpack-master / src / app / shared / storeUtil / utils / pnf / pnf.reducers.ts
1 import {Action} from "redux";
2 import {PnfInstance} from "../../../models/pnfInstance";
3 import {
4   CreatePnfInstanceAction,
5   RemovePnfInstanceAction,
6   UpdatePnfInstanceAction, UpdatePnfPosition,
7   PNFActions
8 } from "./pnf.actions";
9 import * as _ from "lodash";
10 import {ServiceState} from "../main.reducer";
11 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
12 import {deleteFirstLevel, updateServiceValidationCounter, calculateNextUniqueModelName, updateUniqueNames} from "../reducersHelper";
13 import {ActionOnFirstLevel} from "../firstLevel/firstLevel.actions";
14
15 export function pnfReducer(state: ServiceState, action: Action): ServiceState {
16   switch (action.type) {
17     case PNFActions.CREATE_PNF_INSTANCE: {
18       const updatePnfInstanceAction = <CreatePnfInstanceAction>action;
19       const serviceUuid = updatePnfInstanceAction.serviceUuid;
20       let pnfModelName = updatePnfInstanceAction.pnfModelName;
21       let newState = _.cloneDeep(state);
22
23       updatePnfInstanceAction.pnfInstance.originalName = pnfModelName;
24       updatePnfInstanceAction.pnfModelName = calculateNextUniqueModelName(pnfModelName, serviceUuid, newState, 'pnfs');
25
26       let pnfInstance: PnfInstance = newState.serviceInstance[serviceUuid].pnfs[pnfModelName];
27       pnfInstance = new PnfInstance();
28       updatePnfInstanceAction.pnfInstance.pnfStoreKey = updatePnfInstanceAction.pnfModelName;
29       updatePnfInstanceAction.pnfInstance.originalName = pnfModelName;
30       pnfInstance.originalName = updatePnfInstanceAction.pnfInstance.originalName;
31       pnfInstance.pnfStoreKey = updatePnfInstanceAction.pnfInstance.pnfStoreKey;
32       updateServiceValidationCounter(newState, pnfInstance['isMissingData'], updatePnfInstanceAction.pnfInstance['isMissingData'], serviceUuid);
33
34       newState.serviceInstance[serviceUuid].pnfs[updatePnfInstanceAction.pnfModelName] = Object.assign(pnfInstance, updatePnfInstanceAction.pnfInstance);
35       return newState;
36     }
37
38     case PNFActions.UPDATE_PNF_INSTANCE: {
39       const updatePnfInstanceAction = <UpdatePnfInstanceAction>action;
40       const serviceUuid = updatePnfInstanceAction.serviceUuid;
41       let pnfStoreKey = updatePnfInstanceAction.pnfStoreKey;
42
43       let newState = _.cloneDeep(state);
44       let pnfInstance: PnfInstance = newState.serviceInstance[serviceUuid].pnfs[pnfStoreKey];
45       let oldInstanceName = pnfInstance ? pnfInstance.instanceName : null;
46       updateUniqueNames(oldInstanceName, updatePnfInstanceAction.pnfInstance.instanceName, newState.serviceInstance[serviceUuid]);
47
48       pnfInstance = pnfInstance || new PnfInstance();
49       updateServiceValidationCounter(newState, pnfInstance['isMissingData'], updatePnfInstanceAction.pnfInstance['isMissingData'], serviceUuid);
50
51       newState.serviceInstance[serviceUuid].pnfs[pnfStoreKey] = Object.assign(pnfInstance, updatePnfInstanceAction.pnfInstance);
52       return newState;
53     }
54
55     case PNFActions.DELETE_ACTION_PNF_INSTANCE : {
56       return deleteFirstLevel(state, <ActionOnFirstLevel>action,true);
57     }
58
59     case PNFActions.UNDO_DELETE_ACTION_PNF_INSTANCE : {
60       let newState = _.cloneDeep(state);
61       let pnf = newState.serviceInstance[(<ActionOnFirstLevel>action).serviceId].pnfs[(<ActionOnFirstLevel>action).storeKey];
62       let oldState = pnf.action;
63       newState.serviceInstance[(<ActionOnFirstLevel>action).serviceId].pnfs[(<ActionOnFirstLevel>action).storeKey].action = (oldState.split('_')[0]) as ServiceInstanceActions;
64       updateServiceValidationCounter(newState, pnf['isMissingData'], false,  (<ActionOnFirstLevel>action).serviceId);
65       return newState;
66     }
67
68     case PNFActions.REMOVE_PNF_INSTANCE : {
69       let newState = _.cloneDeep(state);
70       let pnfInstance = newState.serviceInstance[(<RemovePnfInstanceAction>action).serviceId].pnfs[(<RemovePnfInstanceAction>action).pnfStoreKey];
71       updateServiceValidationCounter(newState, pnfInstance['isMissingData'], false,  (<RemovePnfInstanceAction>action).serviceId);
72       delete newState.serviceInstance[(<RemovePnfInstanceAction>action).serviceId].pnfs[(<RemovePnfInstanceAction>action).pnfStoreKey];
73       return newState;
74     }
75
76     case PNFActions.UPDATE_PNF_POSITION : {
77       let newState = _.cloneDeep(state);
78       newState.serviceInstance[(<UpdatePnfPosition>action).instanceId]
79         .pnfs[(<UpdatePnfPosition>action).pnfStoreKey]
80         .position = (<UpdatePnfPosition>action).node.position;
81       return newState;
82     }
83   }
84 }
85
86
87