aboutsummaryrefslogtreecommitdiffstats
path: root/cds-ui/designer-client/src/app/common/core
diff options
context:
space:
mode:
Diffstat (limited to 'cds-ui/designer-client/src/app/common/core')
-rw-r--r--cds-ui/designer-client/src/app/common/core/services/api.service.ts51
-rw-r--r--cds-ui/designer-client/src/app/common/core/services/api.typed.service.ts51
-rw-r--r--cds-ui/designer-client/src/app/common/core/stores/Store.ts22
3 files changed, 124 insertions, 0 deletions
diff --git a/cds-ui/designer-client/src/app/common/core/services/api.service.ts b/cds-ui/designer-client/src/app/common/core/services/api.service.ts
new file mode 100644
index 000000000..de8aab886
--- /dev/null
+++ b/cds-ui/designer-client/src/app/common/core/services/api.service.ts
@@ -0,0 +1,51 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+
+Modifications Copyright (C) 2019 Orange
+
+===================================================================
+
+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 {HttpClient, HttpHeaders, HttpResponse, HttpHeaderResponse, HttpParams} from '@angular/common/http';
+import {Observable, of} from 'rxjs';
+
+@Injectable()
+export class ApiService {
+
+ constructor(private httpClient: HttpClient) {
+ }
+
+ get(url: string, params?: {}): Observable<any> {
+ console.log('params', params);
+ let httpParams = new HttpParams();
+ for (const key in params) {
+ if (params.hasOwnProperty(key)) {
+ httpParams = httpParams.append(key, params[key]);
+ }
+ }
+ const options = {params: httpParams};
+ return this.httpClient.get(url, options);
+ }
+
+ post(url: string, body: any | null, options?: any): Observable<any> {
+
+ return this.httpClient.post(url, body, options);
+ }
+}
diff --git a/cds-ui/designer-client/src/app/common/core/services/api.typed.service.ts b/cds-ui/designer-client/src/app/common/core/services/api.typed.service.ts
new file mode 100644
index 000000000..2f3778c1a
--- /dev/null
+++ b/cds-ui/designer-client/src/app/common/core/services/api.typed.service.ts
@@ -0,0 +1,51 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 IBM Intellectual Property. All rights reserved.
+
+Modifications Copyright (C) 2019 Orange
+
+===================================================================
+
+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 { HttpClient, HttpHeaders, HttpResponse, HttpHeaderResponse, HttpParams } from '@angular/common/http';
+import { Observable, of } from 'rxjs';
+
+@Injectable()
+export class ApiService<T> {
+
+ constructor(private httpClient: HttpClient) {
+ }
+
+ get(url: string, params?: {}): Observable<T[]> {
+ console.log('params', params);
+ let httpParams = new HttpParams();
+ for (const key in params) {
+ if (params.hasOwnProperty(key)) {
+ httpParams = httpParams.append(key, params[key]);
+ }
+ }
+ const options = {params: httpParams};
+ return this.httpClient.get<T[]>(url, options);
+ }
+
+ post(url: string, body: any | null, options?: any): Observable<any> {
+
+ return this.httpClient.post(url, body, options);
+ }
+}
diff --git a/cds-ui/designer-client/src/app/common/core/stores/Store.ts b/cds-ui/designer-client/src/app/common/core/stores/Store.ts
new file mode 100644
index 000000000..1d5b0afc1
--- /dev/null
+++ b/cds-ui/designer-client/src/app/common/core/stores/Store.ts
@@ -0,0 +1,22 @@
+import {Observable, BehaviorSubject} from 'rxjs';
+import { Injectable } from '@angular/core';
+
+export class Store<T> {
+ state$: Observable<T>;
+ private subject: BehaviorSubject<T>;
+
+ protected constructor(initialState: T) {
+ this.subject = new BehaviorSubject(initialState);
+ this.state$ = this.subject.asObservable();
+ }
+
+ get state(): T {
+ return this.subject.getValue();
+ }
+
+ protected setState(nextState: T): void {
+ console.log('setting state', this.subject);
+ this.subject.next(nextState);
+ }
+
+}