From ab1ed5de2918c7f199433e3853b1a19b673ba24b Mon Sep 17 00:00:00 2001 From: Swapnali Shadanan Pode Date: Thu, 7 Mar 2019 15:05:40 +0530 Subject: store changes Change-Id: I317f4c2d649c1c8057d52a714f4e5aaf0ba0f6cc Issue-ID: CCSDK-804 Signed-off-by: sp00501638 --- cds-ui/client/src/app/common/core/core.module.ts | 4 +- .../common/core/store/actions/resources.action.ts | 57 ++++++++++++++++++++++ .../common/core/store/effects/resources.effects.ts | 37 ++++++++++++++ .../common/core/store/models/entrySchema.model.ts | 23 +++++++++ .../common/core/store/models/propertyData.model.ts | 27 ++++++++++ .../core/store/models/resources-http.model.ts | 24 +++++++++ .../common/core/store/models/resources.model.ts | 30 ++++++++++++ .../core/store/models/resourcesState.model.ts | 28 +++++++++++ .../common/core/store/models/sourcesData.model.ts | 23 +++++++++ .../app/common/core/store/reducers/app.reducer.ts | 4 +- .../core/store/reducers/resources.reducer.ts | 35 +++++++++++++ .../core/store/selectors/resources.selectors.ts | 30 ++++++++++++ .../src/app/common/core/store/state/app.state.ts | 8 ++- .../app/common/core/store/state/resources.state.ts | 28 +++++++++++ 14 files changed, 353 insertions(+), 5 deletions(-) create mode 100644 cds-ui/client/src/app/common/core/store/actions/resources.action.ts create mode 100644 cds-ui/client/src/app/common/core/store/effects/resources.effects.ts create mode 100644 cds-ui/client/src/app/common/core/store/models/entrySchema.model.ts create mode 100644 cds-ui/client/src/app/common/core/store/models/propertyData.model.ts create mode 100644 cds-ui/client/src/app/common/core/store/models/resources-http.model.ts create mode 100644 cds-ui/client/src/app/common/core/store/models/resources.model.ts create mode 100644 cds-ui/client/src/app/common/core/store/models/resourcesState.model.ts create mode 100644 cds-ui/client/src/app/common/core/store/models/sourcesData.model.ts create mode 100644 cds-ui/client/src/app/common/core/store/reducers/resources.reducer.ts create mode 100644 cds-ui/client/src/app/common/core/store/selectors/resources.selectors.ts create mode 100644 cds-ui/client/src/app/common/core/store/state/resources.state.ts (limited to 'cds-ui') diff --git a/cds-ui/client/src/app/common/core/core.module.ts b/cds-ui/client/src/app/common/core/core.module.ts index f72a8a27c..807065ebc 100644 --- a/cds-ui/client/src/app/common/core/core.module.ts +++ b/cds-ui/client/src/app/common/core/core.module.ts @@ -28,7 +28,7 @@ import { HttpClientModule } from '@angular/common/http'; import { appReducers } from './store/reducers/app.reducer'; import { BlueprintEffects } from './store/effects/blueprint.effects'; - +import { ResourcesEffects } from './store/effects/resources.effects'; import { ApiService } from './services/api.service'; // import { BlueprintService } from './services/blueprint.service'; @@ -38,7 +38,7 @@ import { ApiService } from './services/api.service'; imports: [ CommonModule, StoreModule.forRoot(appReducers), - EffectsModule.forRoot([BlueprintEffects]), + EffectsModule.forRoot([BlueprintEffects,ResourcesEffects]), StoreRouterConnectingModule.forRoot({stateKey: 'router'}), HttpClientModule ], diff --git a/cds-ui/client/src/app/common/core/store/actions/resources.action.ts b/cds-ui/client/src/app/common/core/store/actions/resources.action.ts new file mode 100644 index 000000000..d5a723b6d --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/actions/resources.action.ts @@ -0,0 +1,57 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { Injectable } from '@angular/core'; +import { Action, Store } from '@ngrx/store'; +import { IResources } from '../models/resources.model'; +import { IResourcesState } from '../models/resourcesState.model'; + +export const LOAD_RESOURCES = 'LOAD_RESOURCES'; +export const LOAD_RESOURCES_SUCCESS = 'LOAD_RESOURCES_SUCCESS'; +export const LOAD_RESOURCES_FAILURE = 'LOAD_RESOURCES_FAILURE'; +export const UPDATE_RESOURCES ='UPDATE_RESOURCES'; +export const SET_RESOURCES_STATE = 'SET Resources state'; + + +export class LoadResources implements Action { + readonly type = LOAD_RESOURCES; + constructor(public startLoadSuccess?: boolean) {} +} + +export class LoadResourcesSuccess implements Action { + readonly type = LOAD_RESOURCES_SUCCESS; + constructor(public payload: IResources) {} +} + +export class LoadResourcesFailure implements Action { + readonly type = LOAD_RESOURCES_FAILURE; + constructor(public error: any) {} +} + +export class SetResourcesState implements Action { + readonly type = SET_RESOURCES_STATE; + constructor(public payload: IResourcesState) {} +} + +export class UpdateResources implements Action { + readonly type = UPDATE_RESOURCES; + constructor(public payload: IResources) {} +} + +export type Actions = LoadResources | LoadResourcesSuccess | LoadResourcesFailure | SetResourcesState; \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/effects/resources.effects.ts b/cds-ui/client/src/app/common/core/store/effects/resources.effects.ts new file mode 100644 index 000000000..f48f28497 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/effects/resources.effects.ts @@ -0,0 +1,37 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { Injectable } from '@angular/core'; +import { Effect, ofType, Actions } from '@ngrx/effects'; +import { Store, select } from '@ngrx/store'; +import { of } from 'rxjs'; +import { switchMap, map, withLatestFrom, catchError } from 'rxjs/operators'; + +import { IAppState } from '../state/app.state'; +import * as ResourcesActions from '../actions/resources.action'; + +@Injectable() +export class ResourcesEffects { + + constructor( + private _actions$: Actions, + private _store: Store + ) {} +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/models/entrySchema.model.ts b/cds-ui/client/src/app/common/core/store/models/entrySchema.model.ts new file mode 100644 index 000000000..8e9659051 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/models/entrySchema.model.ts @@ -0,0 +1,23 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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========================================================= +*/ + +export interface IEntrySchema{ + Type:string; +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/models/propertyData.model.ts b/cds-ui/client/src/app/common/core/store/models/propertyData.model.ts new file mode 100644 index 000000000..94cff8991 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/models/propertyData.model.ts @@ -0,0 +1,27 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 {IEntrySchema} from './entrySchema.model'; + +export interface IPropertyData{ + discription:string; + _type:string; + required:boolean; + entry_schema:IEntrySchema; +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/models/resources-http.model.ts b/cds-ui/client/src/app/common/core/store/models/resources-http.model.ts new file mode 100644 index 000000000..3f2556a50 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/models/resources-http.model.ts @@ -0,0 +1,24 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { IResources } from '../models/resources.model'; + +export interface IResourcesHttp { + resources: IResources; +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/models/resources.model.ts b/cds-ui/client/src/app/common/core/store/models/resources.model.ts new file mode 100644 index 000000000..019c2684a --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/models/resources.model.ts @@ -0,0 +1,30 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { ISourcesData } from './sourcesData.model'; +import { IPropertyData } from './propertyData.model'; + +export interface IResources { + name:string ; + tags:string; + updated_bt:string; + property: IPropertyData; + sources: ISourcesData; +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/models/resourcesState.model.ts b/cds-ui/client/src/app/common/core/store/models/resourcesState.model.ts new file mode 100644 index 000000000..7dacf3242 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/models/resourcesState.model.ts @@ -0,0 +1,28 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { IResources } from './resources.model'; + +export interface IResourcesState { + resources: IResources, + isLoadSuccess: boolean; + isUpdateSuccess: boolean; + isSaveSuccess: boolean; +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/models/sourcesData.model.ts b/cds-ui/client/src/app/common/core/store/models/sourcesData.model.ts new file mode 100644 index 000000000..ed43fc969 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/models/sourcesData.model.ts @@ -0,0 +1,23 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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========================================================= +*/ + +export interface ISourcesData{ +sources: object[]; +} \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/reducers/app.reducer.ts b/cds-ui/client/src/app/common/core/store/reducers/app.reducer.ts index 003886068..6f583202c 100644 --- a/cds-ui/client/src/app/common/core/store/reducers/app.reducer.ts +++ b/cds-ui/client/src/app/common/core/store/reducers/app.reducer.ts @@ -24,8 +24,10 @@ import { routerReducer } from '@ngrx/router-store'; import { IAppState } from '../state/app.state'; import { blueprintReducer } from '../reducers/blueprint.reducer'; +import { resourcesReducer } from '../reducers/resources.reducer'; export const appReducers: ActionReducerMap = { router: routerReducer, - blueprint: blueprintReducer + blueprint: blueprintReducer, + resources:resourcesReducer }; \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/reducers/resources.reducer.ts b/cds-ui/client/src/app/common/core/store/reducers/resources.reducer.ts new file mode 100644 index 000000000..c9d587d16 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/reducers/resources.reducer.ts @@ -0,0 +1,35 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { Action } from '@ngrx/store'; +import { IResources } from '../models/resources.model'; +import { IResourcesState } from '../models/resourcesState.model'; +import { initialResourcesState } from '../state/resources.state'; +import * as ResourcesActions from '../actions/resources.action'; + +export function resourcesReducer(state: IResourcesState = initialResourcesState, action: ResourcesActions.Actions) : IResourcesState { + switch(action.type) { + case ResourcesActions.LOAD_RESOURCES_SUCCESS: + return {...state, + resources: action.payload + } + default: + return state; + } +} diff --git a/cds-ui/client/src/app/common/core/store/selectors/resources.selectors.ts b/cds-ui/client/src/app/common/core/store/selectors/resources.selectors.ts new file mode 100644 index 000000000..96ec4d3ec --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/selectors/resources.selectors.ts @@ -0,0 +1,30 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { createSelector } from '@ngrx/store'; + +import { IAppState } from '../state/app.state'; +import { IResourcesState } from '../models/resourcesState.model'; + +const selectResourcesFromAppState = (state: IAppState) => state.resources; + +export const selectResources = createSelector( + selectResourcesFromAppState, + (state: IResourcesState) => state.resources +); \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/state/app.state.ts b/cds-ui/client/src/app/common/core/store/state/app.state.ts index 66e19c9be..052eb2c5b 100644 --- a/cds-ui/client/src/app/common/core/store/state/app.state.ts +++ b/cds-ui/client/src/app/common/core/store/state/app.state.ts @@ -22,12 +22,16 @@ limitations under the License. import { RouterReducerState } from '@ngrx/router-store'; import { IBlueprintState } from '../models/blueprintState.model'; import { initialBlueprintState } from './blueprint.state'; +import { IResourcesState } from '../models/resourcesState.model'; +import { initialResourcesState } from './resources.state'; export interface IAppState { router? : RouterReducerState, - blueprint: IBlueprintState + blueprint: IBlueprintState, + resources: IResourcesState } export const initialAppState: IAppState = { - blueprint: initialBlueprintState + blueprint: initialBlueprintState, + resources: initialResourcesState } \ No newline at end of file diff --git a/cds-ui/client/src/app/common/core/store/state/resources.state.ts b/cds-ui/client/src/app/common/core/store/state/resources.state.ts new file mode 100644 index 000000000..046667a04 --- /dev/null +++ b/cds-ui/client/src/app/common/core/store/state/resources.state.ts @@ -0,0 +1,28 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : CDS +* ================================================================================ +* Copyright (C) 2019 TechMahindra +*================================================================================= +* 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 { IResourcesState } from '../models/resourcesState.model'; +import { IResources } from '../models/resources.model'; + +export const initialResourcesState : IResourcesState = { + resources : {} as IResources, + isLoadSuccess: false, + isUpdateSuccess: false, + isSaveSuccess: false, +} \ No newline at end of file -- cgit 1.2.3-korg