File

projects/web-mev/src/app/features/workspace-manager/services/workspace.service.ts

Index

Properties
Methods
Accessors

Constructor

constructor(httpClient: HttpClient, adapter: WorkspaceAdapter)
Parameters :
Name Type Optional
httpClient HttpClient No
adapter WorkspaceAdapter No

Methods

addWorkspace
addWorkspace(workspace: Workspace)
Parameters :
Name Type Optional
workspace Workspace No
Returns : void
deleteWorkspace
deleteWorkspace(id: number)
Parameters :
Name Type Optional
id number No
Returns : void
getAllWorkspaces
getAllWorkspaces()
Returns : void
getDialogData
getDialogData()
Returns : any
updateWorkspace
updateWorkspace(workspace: Workspace)
Parameters :
Name Type Optional
workspace Workspace No
Returns : void

Properties

Private Readonly API_URL
Default value : environment.apiUrl + '/workspaces'
dataChange
Type : BehaviorSubject<Workspace[]>
Default value : new BehaviorSubject<Workspace[]>( [] )
dialogData
Type : any

Accessors

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();
  }
}

result-matching ""

    No results matching ""