projects/web-mev/src/app/features/workspace-manager/services/workspace.service.ts
Properties |
|
Methods |
Accessors |
constructor(httpClient: HttpClient, adapter: WorkspaceAdapter)
|
|||||||||
|
Parameters :
|
| addWorkspace | ||||||
addWorkspace(workspace: Workspace)
|
||||||
|
Parameters :
Returns :
void
|
| deleteWorkspace | ||||||
deleteWorkspace(id: number)
|
||||||
|
Parameters :
Returns :
void
|
| getAllWorkspaces |
getAllWorkspaces()
|
|
Returns :
void
|
| getDialogData |
getDialogData()
|
|
Returns :
any
|
| updateWorkspace | ||||||
updateWorkspace(workspace: Workspace)
|
||||||
|
Parameters :
Returns :
void
|
| Private Readonly API_URL |
Default value : environment.apiUrl + '/workspaces'
|
| dataChange |
Type : BehaviorSubject<Workspace[]>
|
Default value : new BehaviorSubject<Workspace[]>(
[]
)
|
| dialogData |
Type : any
|
| data |
getdata()
|
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { Workspace, WorkspaceAdapter } from '../models/workspace';
import { environment } from '@environments/environment';
@Injectable({
providedIn: 'root'
})
export class WorkspaceService {
private readonly API_URL = environment.apiUrl + '/workspaces';
dataChange: BehaviorSubject<Workspace[]> = new BehaviorSubject<Workspace[]>(
[]
);
// Temporarily stores data from dialogs
dialogData: any;
constructor(
private httpClient: HttpClient,
private adapter: WorkspaceAdapter
) {}
get data(): Workspace[] {
return this.dataChange.value;
}
getDialogData() {
return this.dialogData;
}
getAllWorkspaces(): void {
this.httpClient
.get<Workspace[]>(`${this.API_URL}/`)
.pipe(map((data: any[]) => data.map(item => this.adapter.adapt(item))))
.subscribe(data => {
this.dataChange.next(data);
});
}
// ADD, POST METHOD
addWorkspace(workspace: Workspace): void {
this.httpClient.post(`${this.API_URL}/`, workspace).subscribe(data => {
this.dialogData = workspace;
});
}
// UPDATE, PUT METHOD
updateWorkspace(workspace: Workspace): void {
this.httpClient
.put(`${this.API_URL}/${workspace.id}/`, workspace)
.subscribe(data => {
this.dialogData = workspace;
});
}
// DELETE METHOD
deleteWorkspace(id: number): void {
this.httpClient.delete(`${this.API_URL}/${id}/`).subscribe();
}
}