aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cds-ui/client/package.json3
-rw-r--r--cds-ui/client/src/app/common/store/actions/blueprint.action.ts70
-rw-r--r--cds-ui/client/src/app/common/store/effects/blueprint.effects.ts56
-rw-r--r--cds-ui/client/src/app/common/store/models/blueprint-http.model.ts25
-rw-r--r--cds-ui/client/src/app/common/store/models/blueprint.model.ts30
-rw-r--r--cds-ui/client/src/app/common/store/models/blueprintState.model.ts32
-rw-r--r--cds-ui/client/src/app/common/store/models/imports.model.ts24
-rw-r--r--cds-ui/client/src/app/common/store/models/metadata.model.ts28
-rw-r--r--cds-ui/client/src/app/common/store/reducers/app.reducer.ts31
-rw-r--r--cds-ui/client/src/app/common/store/reducers/blueprint.reducer.ts56
-rw-r--r--cds-ui/client/src/app/common/store/selectors/blueprint.selectors.ts31
-rw-r--r--cds-ui/client/src/app/common/store/state/app.state.ts33
-rw-r--r--cds-ui/client/src/app/common/store/state/blueprint.state.ts31
13 files changed, 450 insertions, 0 deletions
diff --git a/cds-ui/client/package.json b/cds-ui/client/package.json
index b0d00d6b9..47c66bb63 100644
--- a/cds-ui/client/package.json
+++ b/cds-ui/client/package.json
@@ -22,6 +22,9 @@
"@angular/platform-browser-dynamic": "~7.1.0",
"@angular/router": "~7.1.0",
"@ngrx/core": "^1.2.0",
+ "@ngrx/effects": "^6.1.2",
+ "@ngrx/router-store": "^6.1.2",
+ "@ngrx/store-devtools": "^6.1.2",
"@ngrx/store": "^6.1.2",
"core-js": "^2.5.4",
"font-awesome": "^4.7.0",
diff --git a/cds-ui/client/src/app/common/store/actions/blueprint.action.ts b/cds-ui/client/src/app/common/store/actions/blueprint.action.ts
new file mode 100644
index 000000000..6a0ab8065
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/actions/blueprint.action.ts
@@ -0,0 +1,70 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IBlueprint } from '../models/blueprint.model';
+import { IBlueprintState } from '../models/blueprintState.model';
+
+export const LOAD_BLUEPRINT = 'LOAD_BLUEPRINT';
+export const LOAD_BLUEPRINT_SUCCESS = 'LOAD_BLUEPRINT_SUCCESS';
+export const LOAD_BLUEPRINT_FAILURE = 'LOAD_BLUEPRINT_FAILURE';
+export const UPDATE_BLUEPRINT ='UPDATE_BLUEPRINT';
+export const UPDATE_BLUEPRINT_SUCCESS = 'UPDATE_BLUEPRINT_SUCCESS';
+export const UPDATE_BLUEPRINT_FAILURE = 'UPDATE_BLUEPRINT_FAILURE';
+export const SAVE_BLUEPRINT = 'SAVE_BLUEPRINT';
+export const SAVE_BLUEPRINT_SUCCESS = 'SAVE_BLUEPRINT_SUCCESS';
+export const SAVE_BLUEPRINT_FAILURE = 'SAVE_BLUEPRINT_FAILURE';
+
+export const SET_BLUEPRINT = 'SET Blueprint';
+export const REMOVE_BLUEPRINT = 'Remove Blueprint';
+
+
+export class LoadBlueprint implements Action {
+ readonly type = LOAD_BLUEPRINT;
+ constructor(public startLoadSuccess?: boolean) {}
+}
+
+export class LoadBlueprintSuccess implements Action {
+ readonly type = LOAD_BLUEPRINT_SUCCESS;
+ constructor(public payload: IBlueprint) {}
+}
+
+export class LoadBlueprintFailure implements Action {
+ readonly type = LOAD_BLUEPRINT_FAILURE;
+ constructor(public error: any) {}
+}
+
+// export class SetBlueprint implements Action {
+// readonly type = SET_BLUEPRINT;
+// constructor(public payload: Blueprint) {}
+// }
+
+// export class RemoveBlueprint implements Action {
+// readonly type = REMOVE_BLUEPRINT;
+// constructor(public payload: Blueprint) {}
+// }
+
+export class UpdateBlueprint implements Action {
+ readonly type = UPDATE_BLUEPRINT;
+ constructor(public payload: IBlueprint) {}
+}
+
+export type Actions = LoadBlueprint | LoadBlueprintSuccess | LoadBlueprintFailure; \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/effects/blueprint.effects.ts b/cds-ui/client/src/app/common/store/effects/blueprint.effects.ts
new file mode 100644
index 000000000..e1b1c2fd9
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/effects/blueprint.effects.ts
@@ -0,0 +1,56 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 BlueprintActions from '../actions/blueprint.action';
+// import { IBlueprintHttp } from '../models/blueprint-http.model';
+// import { BlueprintService } from '../../services/blueprint.service';
+// import { BlueprintService } from '../../../feature-modules/blueprint/blueprint.service';
+
+@Injectable()
+export class BlueprintEffects {
+
+
+ constructor(
+ // private blueprintService: BlueprintService,
+ private _actions$: Actions,
+ private _store: Store<IAppState>
+ ) {}
+
+ // @Effect()
+ // getBlueprint$ = this._actions$.pipe(
+ // ofType<BlueprintActions.LoadBlueprint>(BlueprintActions.LOAD_BLUEPRINT),
+ // switchMap(() =>
+ // this.blueprintService.loadBlueprint().pipe(
+ // map((blueprintResponse: any) => new BlueprintActions.LoadBlueprintSuccess(blueprintResponse)),
+ // catchError((error : any) => of(new BlueprintActions.LoadBlueprintSuccess(error)))
+ // ),
+ // ,
+ // switchMap((blueprintResponse: any) => of(new BlueprintActions.LoadBlueprintSuccess(blueprintResponse)))
+// ),
+// )
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/models/blueprint-http.model.ts b/cds-ui/client/src/app/common/store/models/blueprint-http.model.ts
new file mode 100644
index 000000000..e0e98d580
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/models/blueprint-http.model.ts
@@ -0,0 +1,25 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IBlueprint } from '../models/blueprint.model';
+
+export interface IBlueprintHttp {
+ blueprint: IBlueprint;
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/models/blueprint.model.ts b/cds-ui/client/src/app/common/store/models/blueprint.model.ts
new file mode 100644
index 000000000..a061a4364
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/models/blueprint.model.ts
@@ -0,0 +1,30 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IMetaData } from './metadata.model';
+import { IImportModel } from './imports.model';
+
+
+export interface IBlueprint {
+ metadata: IMetaData;
+ fileImports: Array<IImportModel>
+ toplogyTemplates: string;
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/models/blueprintState.model.ts b/cds-ui/client/src/app/common/store/models/blueprintState.model.ts
new file mode 100644
index 000000000..556b33d19
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/models/blueprintState.model.ts
@@ -0,0 +1,32 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IMetaData } from './metadata.model';
+import { IImportModel } from './imports.model';
+import { IBlueprint } from './blueprint.model';
+
+
+export interface IBlueprintState {
+ blueprint: IBlueprint,
+ isLoadSuccess: boolean;
+ isUpdateSuccess: boolean;
+ isSaveSuccess: boolean;
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/models/imports.model.ts b/cds-ui/client/src/app/common/store/models/imports.model.ts
new file mode 100644
index 000000000..9510ed3cf
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/models/imports.model.ts
@@ -0,0 +1,24 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 IImportModel {
+ file: string;
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/models/metadata.model.ts b/cds-ui/client/src/app/common/store/models/metadata.model.ts
new file mode 100644
index 000000000..6ee427504
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/models/metadata.model.ts
@@ -0,0 +1,28 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 IMetaData {
+ template_author: string;
+ author_email: String;
+ user_groups: string;
+ template_name: string;
+ template_version: string;
+ template_tags: string;
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/reducers/app.reducer.ts b/cds-ui/client/src/app/common/store/reducers/app.reducer.ts
new file mode 100644
index 000000000..003886068
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/reducers/app.reducer.ts
@@ -0,0 +1,31 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { ActionReducerMap } from '@ngrx/store';
+import { routerReducer } from '@ngrx/router-store';
+
+import { IAppState } from '../state/app.state';
+import { blueprintReducer } from '../reducers/blueprint.reducer';
+
+export const appReducers: ActionReducerMap<IAppState, any> = {
+ router: routerReducer,
+ blueprint: blueprintReducer
+}; \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/reducers/blueprint.reducer.ts b/cds-ui/client/src/app/common/store/reducers/blueprint.reducer.ts
new file mode 100644
index 000000000..edcf1c38a
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/reducers/blueprint.reducer.ts
@@ -0,0 +1,56 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IBlueprint } from '../models/blueprint.model';
+import { IBlueprintState } from '../models/blueprintState.model';
+import { initialBlueprintState } from '../state/blueprint.state';
+import * as BlueprintActions from '../actions/blueprint.action';
+
+// const initialState: BlueprintState = {
+// blueprint: {
+// metadata: {
+// template_author: '',
+// author_email: '',
+// user_groups: '',
+// template_name: '',
+// template_version: '',
+// template_tags: ''
+// },
+// fileImports: [{file:''}],
+// toplogyTemplates: 'temp'
+// },
+// isLoadSuccess: false,
+// isUpdateSuccess: false,
+// isSaveSuccess: false
+// }
+
+
+export function blueprintReducer(state: IBlueprintState = initialBlueprintState, action: BlueprintActions.Actions) : IBlueprintState {
+ switch(action.type) {
+ case BlueprintActions.LOAD_BLUEPRINT_SUCCESS:
+ return {...state,
+ blueprint: action.payload
+ }
+ default:
+ return state;
+ }
+}
diff --git a/cds-ui/client/src/app/common/store/selectors/blueprint.selectors.ts b/cds-ui/client/src/app/common/store/selectors/blueprint.selectors.ts
new file mode 100644
index 000000000..d23221cce
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/selectors/blueprint.selectors.ts
@@ -0,0 +1,31 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IBlueprintState } from '../models/blueprintState.model';
+
+const selectBlueprintFromAppState = (state: IAppState) => state.blueprint;
+
+export const selectBlueprint = createSelector(
+ selectBlueprintFromAppState,
+ (state: IBlueprintState) => state.blueprint
+); \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/state/app.state.ts b/cds-ui/client/src/app/common/store/state/app.state.ts
new file mode 100644
index 000000000..66e19c9be
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/state/app.state.ts
@@ -0,0 +1,33 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { RouterReducerState } from '@ngrx/router-store';
+import { IBlueprintState } from '../models/blueprintState.model';
+import { initialBlueprintState } from './blueprint.state';
+
+export interface IAppState {
+ router? : RouterReducerState,
+ blueprint: IBlueprintState
+}
+
+export const initialAppState: IAppState = {
+ blueprint: initialBlueprintState
+} \ No newline at end of file
diff --git a/cds-ui/client/src/app/common/store/state/blueprint.state.ts b/cds-ui/client/src/app/common/store/state/blueprint.state.ts
new file mode 100644
index 000000000..913072665
--- /dev/null
+++ b/cds-ui/client/src/app/common/store/state/blueprint.state.ts
@@ -0,0 +1,31 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { IBlueprintState } from '../models/blueprintState.model';
+import { IBlueprint } from '../models/blueprint.model';
+
+
+export const initialBlueprintState : IBlueprintState = {
+ blueprint : {} as IBlueprint,
+ isLoadSuccess: false,
+ isUpdateSuccess: false,
+ isSaveSuccess: false,
+} \ No newline at end of file