diff options
Diffstat (limited to 'vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts')
-rw-r--r-- | vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts | 153 |
1 files changed, 94 insertions, 59 deletions
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts index c6d3da52a..811238385 100644 --- a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts @@ -4,8 +4,10 @@ import { ChangeServiceDirty, CreateServiceInstanceAction, ServiceActions, + UndoUpgradeServiceAction, UpdateServiceInstanceAction, - UpdateServiceModelAction + UpdateServiceModelAction, + UpgradeServiceAction } from "./service.actions"; import {ServiceInstance} from "../../../models/serviceInstance"; import {ServiceState} from "../main.reducer"; @@ -13,84 +15,99 @@ import {ServiceInstanceActions} from "../../../models/serviceInstanceActions"; import * as _ from "lodash"; export function serviceReducer(state: ServiceState, action: Action) : ServiceState{ - switch (action.type) { - case ServiceActions.UPDATE_SERVICE_INSTANCE : { - let newState = _.cloneDeep(state); - const updateServiceInstanceAction = <UpdateServiceInstanceAction>action; - const uuid = updateServiceInstanceAction.serviceUuid; - const serviceInstance = updateServiceInstanceAction.serviceInstance; + switch (action.type) { + case ServiceActions.UPDATE_SERVICE_INSTANCE : { + let newState = _.cloneDeep(state); + const updateServiceInstanceAction = <UpdateServiceInstanceAction>action; + const uuid = updateServiceInstanceAction.serviceUuid; + const serviceInstance = updateServiceInstanceAction.serviceInstance; - updateUniqueNames(serviceInstance.instanceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]); + updateUniqueNames(serviceInstance.instanceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]); - newState.serviceInstance[uuid] = _.merge(newState.serviceInstance[uuid], serviceInstance); - return newState; - } - case ServiceActions.CREATE_SERVICE_INSTANCE : { - const updateServiceInstanceAction = <CreateServiceInstanceAction>action; - const uuid = updateServiceInstanceAction.serviceUuid; - let newState = _.cloneDeep(state); + newState.serviceInstance[uuid] = _.merge(newState.serviceInstance[uuid], serviceInstance); + return newState; + } + case ServiceActions.CREATE_SERVICE_INSTANCE : { + const updateServiceInstanceAction = <CreateServiceInstanceAction>action; + const uuid = updateServiceInstanceAction.serviceUuid; + let newState = _.cloneDeep(state); - const serviceInstance: ServiceInstance = new ServiceInstance(); - const currentInstaceName = state.serviceInstance[uuid] ? serviceInstance.instanceName : null; + const serviceInstance: ServiceInstance = new ServiceInstance(); + const currentInstaceName = state.serviceInstance[uuid] ? serviceInstance.instanceName : null; - newState.serviceInstance[uuid] = Object.assign(serviceInstance, updateServiceInstanceAction.serviceInstance); - newState.serviceInstance[uuid].vidNotions = _.get(state,`serviceHierarchy[${uuid}].service.vidNotions`); - if (!_.isNil(updateServiceInstanceAction.serviceInstance)) { - updateUniqueNames(currentInstaceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]); - } - return newState; - } - case ServiceActions.DELETE_ALL_SERVICE_INSTANCES: { - if (state.serviceInstance) { - let newState = _.cloneDeep(state); - newState.serviceInstance = {}; - return Object.assign({}, state, newState); - } - return Object.assign({}, state); + newState.serviceInstance[uuid] = Object.assign(serviceInstance, updateServiceInstanceAction.serviceInstance); + newState.serviceInstance[uuid].vidNotions = _.get(state,`serviceHierarchy[${uuid}].service.vidNotions`); + if (!_.isNil(updateServiceInstanceAction.serviceInstance)) { + updateUniqueNames(currentInstaceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]); } - case ServiceActions.UPDATE_MODEL: { - let uuid = (<UpdateServiceModelAction>action).serviceHierarchy.service.uuid; - state.serviceHierarchy[uuid] = _.cloneDeep((<UpdateServiceModelAction>action).serviceHierarchy); - return Object.assign({}, state); + return newState; + } + case ServiceActions.DELETE_ALL_SERVICE_INSTANCES: { + if (state.serviceInstance) { + let newState = _.cloneDeep(state); + newState.serviceInstance = {}; + return Object.assign({}, state, newState); } - case ServiceActions.ADD_SERVICE_ACTION: { - const uuid: string = (<AddServiceAction>action).serviceUuid; - const actionToAdd: ServiceInstanceActions = (<AddServiceAction>action).action; - state.serviceInstance[uuid].action = actionToAdd; - return Object.assign({}, state); + return Object.assign({}, state); + } + case ServiceActions.UPDATE_MODEL: { + let uuid = (<UpdateServiceModelAction>action).serviceHierarchy.service.uuid; + state.serviceHierarchy[uuid] = _.cloneDeep((<UpdateServiceModelAction>action).serviceHierarchy); + return Object.assign({}, state); + } + case ServiceActions.ADD_SERVICE_ACTION: { + const uuid: string = (<AddServiceAction>action).serviceUuid; + const actionToAdd: ServiceInstanceActions = (<AddServiceAction>action).action; + state.serviceInstance[uuid].action = actionToAdd; + return Object.assign({}, state); + } + case ServiceActions.CHANGE_SERVICE_IS_DIRTY : { + let newState = _.cloneDeep(state); + let serviceInstanceAction: ServiceInstanceActions = newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].action; + + if(serviceInstanceAction !== ServiceInstanceActions.None){ + newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = true; + return newState; } - case ServiceActions.CHANGE_SERVICE_IS_DIRTY : { - let newState = _.cloneDeep(state); - let serviceInstanceAction: ServiceInstanceActions = newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].action; - if(serviceInstanceAction !== ServiceInstanceActions.None){ + const nodes = (<ChangeServiceDirty>action).nodes; + for(let node of nodes){ + const dirty = isDirty(node); + if(dirty) { newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = true; return newState; } + } + newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = false; + return newState; + } + case ServiceActions.UPGRADE_SERVICE_ACTION: { + let clonedState = _.cloneDeep(state); + let oldServiceAction: string = ServiceInstanceActions.None; + const castingAction = <UpgradeServiceAction>action; + const uuid: string = castingAction.serviceUuid; + return upgradeServiceInstance(clonedState, uuid, oldServiceAction); + } - const nodes = (<ChangeServiceDirty>action).nodes; - for(let node of nodes){ - const dirty = isDirty(node); - if(dirty) { - newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = true; - return newState; - } - } - - newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = false; - return newState; + case ServiceActions.UNDO_UPGRADE_SERVICE_ACTION: { + let clonedState = _.cloneDeep(state); + const castingAction = <UndoUpgradeServiceAction>action; + const uuid: string = castingAction.serviceUuid; + if(!_.isNil(clonedState.serviceInstance[uuid].action) && clonedState.serviceInstance[uuid].action.includes("Upgrade")) { + return undoUpgradeServiceInstance(clonedState, uuid); } } + } } const isDirty = (node) : boolean => { if(node.action !== ServiceInstanceActions.None) return true; if(!_.isNil(node.children) && node.children.length > 0){ - for(let child of node.children){ - const dirty: boolean = isDirty(child); - if(dirty) return true; - } + for(let child of node.children){ + const dirty: boolean = isDirty(child); + if(dirty) return true; + } } return false; }; @@ -105,5 +122,23 @@ const updateUniqueNames = (oldName : string, newName : string, serviceInstance : } }; +function upgradeServiceInstance(clonedState, uuid: string, oldServiceAction: string) { + if(!clonedState.serviceInstance[uuid].action.includes("Upgrade")){ + clonedState.serviceInstance[uuid].action = (`${oldServiceAction}_Upgrade`) as ServiceInstanceActions; + } + clonedState.serviceInstance[uuid].isUpgraded = true; + clonedState.serviceInstance[uuid].upgradedVFMSonsCounter++; + return clonedState; +} + +function undoUpgradeServiceInstance(clonedState, uuid: string) { + clonedState.serviceInstance[uuid].upgradedVFMSonsCounter--; + if(clonedState.serviceInstance[uuid].upgradedVFMSonsCounter == 0){ + clonedState.serviceInstance[uuid].action = ServiceInstanceActions.None; + clonedState.serviceInstance[uuid].isUpgraded = false; + } + return clonedState; +} + |