File

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

Description

Workspace Detail service

Used for operations within a current workspace

Index

Properties
Methods

Constructor

constructor(httpClient: HttpClient, fileAdapter: FileAdapter, wsAdapter: WorkspaceResourceAdapter)
Parameters :
Name Type Optional
httpClient HttpClient No
fileAdapter FileAdapter No
wsAdapter WorkspaceResourceAdapter No

Methods

addResourceToWorkspace
addResourceToWorkspace(resourceId: string, workspaceId: string)

Connect a file to the current workspace

Parameters :
Name Type Optional
resourceId string No
workspaceId string No
Returns : Observable<any>
deleteResourceFromWorkspace
deleteResourceFromWorkspace(resourceId: string, workspaceId: string)

Delete a file from the current workspace

Parameters :
Name Type Optional
resourceId string No
workspaceId string No
Returns : Observable<any>
getAvailableResources
getAvailableResources()

Get the list of resources that can be potentially added to a workspace

Returns : Observable<File[]>
getConnectedResources
getConnectedResources(workspaceId: string)

Get the list of connected resources that has been already added to a workspace

Parameters :
Name Type Optional
workspaceId string No
Returns : Observable<WorkspaceResource[]>
getResourceMetadata
getResourceMetadata(resourceId: number | string)

Get workspace resource metadata

Parameters :
Name Type Optional
resourceId number | string No
Returns : Observable<any>
getResourceMetadataFeatures
getResourceMetadataFeatures(resourceId: number | string)

Get workspace resource features

Parameters :
Name Type Optional
resourceId number | string No
Returns : Observable<any>
getResourceMetadataObservations
getResourceMetadataObservations(resourceId: number | string)

Get workspace resource observations

Parameters :
Name Type Optional
resourceId number | string No
Returns : Observable<any>
getResourcePreview
getResourcePreview(resourceId: number | string)

Preview workspace resource content. Display only the first 5 rows

Parameters :
Name Type Optional
resourceId number | string No
Returns : Observable<any>
getWorkspaceDetail
getWorkspaceDetail(workspaceId: number | string)

Get workspace properties

Parameters :
Name Type Optional
workspaceId number | string No
getWorkspaceMetadata
getWorkspaceMetadata(workspaceId: number | string)

Get workspace metadata

Parameters :
Name Type Optional
workspaceId number | string No
Returns : Observable<any>
getWorkspaceMetadataFeatures
getWorkspaceMetadataFeatures(workspaceId: number | string)

Get all workspace features

Parameters :
Name Type Optional
workspaceId number | string No
Returns : Observable<any>
getWorkspaceMetadataObservations
getWorkspaceMetadataObservations(workspaceId: number | string)

Get all workspace observations

Parameters :
Name Type Optional
workspaceId number | string No
Returns : Observable<any>

Properties

Private Readonly API_URL
Default value : environment.apiUrl
import { Injectable } from '@angular/core';
import { environment } from '@environments/environment';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Workspace } from '@workspace-manager/models/workspace';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';
import {
  WorkspaceResource,
  WorkspaceResourceAdapter
} from '../models/workspace-resource';
import { File, FileAdapter } from '@app/shared/models/file';

/**
 * Workspace Detail service
 *
 * Used for operations within a current workspace
 */
@Injectable({
  providedIn: 'root'
})
export class WorkspaceDetailService {
  private readonly API_URL = environment.apiUrl;
  constructor(
    private httpClient: HttpClient,
    private fileAdapter: FileAdapter,
    private wsAdapter: WorkspaceResourceAdapter
  ) {}

  /**
   * Get the list of resources that can be potentially added to a workspace
   *
   */
  getAvailableResources(): Observable<File[]> {
    return <Observable<File[]>>(
      this.httpClient
        .get(`${this.API_URL}/resources/`)
        .pipe(
          map((data: any[]) => data.map(item => this.fileAdapter.adapt(item)))
        )
    );
  }

  /**
   * Get the list of connected resources that has been already added to a workspace
   *
   */
  getConnectedResources(workspaceId: string): Observable<WorkspaceResource[]> {
    return <Observable<WorkspaceResource[]>>(
      this.httpClient
        .get(`${this.API_URL}/workspaces/${workspaceId}/resources/`)
        .pipe(
          map((data: any[]) => data.map(item => this.wsAdapter.adapt(item)))
        )
    );
  }

  /**
   * Get workspace properties
   *
   */
  getWorkspaceDetail(workspaceId: number | string): Observable<Workspace> {
    return <Observable<Workspace>>(
      this.httpClient.get(`${this.API_URL}/workspaces/${workspaceId}/`)
    );
  }

  /**
   * Preview workspace resource content. Display only the first 5 rows
   *
   */
  getResourcePreview(resourceId: number | string): Observable<any> {
    const params = {
      params: new HttpParams().set('page', '1').set('page_size', '5')
    };
    return <Observable<any>>(
      this.httpClient.get(
        `${this.API_URL}/resources/${resourceId}/contents/`,
        params
      )
    );
  }

  /**
   * Get workspace resource metadata
   *
   */
  getResourceMetadata(resourceId: number | string): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(`${this.API_URL}/resources/${resourceId}/metadata/`)
    );
  }

  /**
   * Get workspace metadata
   *
   */
  getWorkspaceMetadata(workspaceId: number | string): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(`${this.API_URL}/workspaces/${workspaceId}/metadata/`)
    );
  }

  /**
   * Get workspace resource observations
   *
   */
  getResourceMetadataObservations(
    resourceId: number | string
  ): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(
        `${this.API_URL}/resources/${resourceId}/metadata/observations/`
      )
    );
  }

  /**
   * Get all workspace observations
   *
   */
  getWorkspaceMetadataObservations(
    workspaceId: number | string
  ): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(
        `${this.API_URL}/workspaces/${workspaceId}/metadata/observations/`
      )
    );
  }

  /**
   * Get workspace resource features
   *
   */
  getResourceMetadataFeatures(resourceId: number | string): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(
        `${this.API_URL}/resources/${resourceId}/metadata/features/`
      )
    );
  }

  /**
   * Get all workspace features
   *
   */
  getWorkspaceMetadataFeatures(workspaceId: number | string): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(
        `${this.API_URL}/workspaces/${workspaceId}/metadata/features/`
      )
    );
  }

  /**
   * Connect a file to the current workspace
   *
   */
  addResourceToWorkspace(
    resourceId: string,
    workspaceId: string
  ): Observable<any> {
    return <Observable<any>>(
      this.httpClient.post(
        `${this.API_URL}/workspaces/${workspaceId}/resources/add/`,
        { resource_uuid: resourceId }
      )
    );
  }

  /**
   * Delete a file from the current workspace
   *
   */
  deleteResourceFromWorkspace(
    resourceId: string,
    workspaceId: string
  ): Observable<any> {
    return <Observable<any>>(
      this.httpClient.get(
        `${this.API_URL}/workspaces/${workspaceId}/resources/${resourceId}/remove/`
      )
    );
  }
}

result-matching ""

    No results matching ""