All files / src/shared/services settingsService.ts

1.75% Statements 1/57
100% Branches 0/0
0% Functions 0/27
1.78% Lines 1/56

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158                    1x                                                                                                                                                                                                                                                                                                      
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable } from '@angular/core';
import { Border, ConfidenceParameter, Distance, ExtremumDescriptionSettings, FilterSettings, JsonSimpleValue, SmoothingParameter, TrackingServerAppSettings } from '@reflex/shared-types';
import { PointCloudSettings } from '@reflex/shared-types/dist/config/point-cloud-settings';
import { Observable, Subject } from 'rxjs';
 
@Injectable({
  providedIn: 'root'
})
 
export class SettingsService {
 
  private readonly settingsSubject: Subject<TrackingServerAppSettings>;
  private readonly settings$: Observable<TrackingServerAppSettings>;
 
  private readonly settingsRoute = `${this.baseUrl}api/Settings`;
  private readonly setBorderRoute = `${this.settingsRoute}/Border`;
  private readonly setMinDistanceFromSensorRoute = `${this.settingsRoute}/MinDistanceFromSensor`;
  private readonly setThresholdRoute = `${this.settingsRoute}/Threshold`;
  private readonly setMinAngleRoute = `${this.settingsRoute}/minAngle`;
  private readonly setConfidenceRoute = `${this.settingsRoute}/Confidence`;
  private readonly setSmoothingValuesRoute = `${this.settingsRoute}/Smoothing`;
  private readonly setExtremumSettingsRoute = `${this.settingsRoute}/ExtremumsCheck`;
  private readonly setDistanceRoute = `${this.settingsRoute}/Distance`;
  private readonly setOptimizedBoxFilterRoute = `${this.settingsRoute}/UseOptimizedBoxFilter`;
  private readonly setFilterRadiusRoute = `${this.settingsRoute}/FilterRadius`;
  private readonly setFilterPassesRoute = `${this.settingsRoute}/FilterPasses`;
  private readonly setFilterThreadsRoute = `${this.settingsRoute}/FilterThreads`;
  private readonly setLimitationFilterTypeRoute = `${this.settingsRoute}/LimitationFilterType`;
  private readonly setPointCloudSettingsRoute = `${this.settingsRoute}/PointCloudSettings`;
  private readonly saveSettingsRoute = `${this.settingsRoute}`;
  private readonly canRestoreRoute = `${this.settingsRoute}/CanRestore`;
  private readonly getZeroPlaneDistanceRoute = `${this.settingsRoute}/ComputeZeroPlaneDistance`;
  private readonly initializeAdvancedLimitationFilterRoute = `${this.settingsRoute}/InitializeAdvancedLimitationFilter`;
  private readonly resetAdvancedLimitationFilterRoute = `${this.settingsRoute}/ResetAdvancedLimitationFilter`;
  private readonly limitationFilterInitializingRoute = `${this.settingsRoute}/LimitationFilterInitializing`;
  private readonly limitationFilterInitStateRoute = `${this.settingsRoute}/LimitationFilterInitState`;
  private readonly restoreRoute = `${this.settingsRoute}/Restore`;
  private readonly resetRoute = `${this.settingsRoute}/Reset`;
 
 
  public constructor(
    private readonly http: HttpClient,
    // eslint-disable-next-line new-cap
    @Inject('BASE_URL') private readonly baseUrl: string
  ) {
    this.settingsSubject = new Subject<TrackingServerAppSettings>();
    this.settings$ = this.settingsSubject.asObservable();
    this.update();
  }
 
  public getSettings(): Observable<TrackingServerAppSettings> {
    return this.settings$;
  }
 
  public update(): void {
    this.http.get<TrackingServerAppSettings>(this.settingsRoute).subscribe((result) => this.settingsSubject.next(result));
  }
 
  public setBorder(border: Border): Observable<Border> {
    return this.http.post<Border>(this.setBorderRoute, border);
  }
 
  public setMinDistanceFromSensor(distance: number): Observable<number> {
    return this.http.post<number>(this.setMinDistanceFromSensorRoute, distance);
  }
 
  public setThreshold(threshold: number): Observable<JsonSimpleValue> {
    return this.http.post<JsonSimpleValue>(this.setThresholdRoute, threshold);
  }
 
  public setConfidence(confidence: ConfidenceParameter): Observable<ConfidenceParameter> {
    return this.http.post<ConfidenceParameter>(this.setConfidenceRoute, confidence);
  }
 
  public setSmoothingValues(smoothing: SmoothingParameter): Observable<SmoothingParameter> {
    return this.http.post<SmoothingParameter>(this.setSmoothingValuesRoute, smoothing);
  }
 
  public setExtremumSettings(extremumSettings: ExtremumDescriptionSettings): Observable<ExtremumDescriptionSettings> {
    return this.http.post<ExtremumDescriptionSettings>(this.setExtremumSettingsRoute, extremumSettings);
  }
 
  public setPointCloudSettings(pointCloudSettingValues: PointCloudSettings): Observable<PointCloudSettings> {
    return this.http.post<PointCloudSettings>(this.setPointCloudSettingsRoute, pointCloudSettingValues);
  }
 
  public setDistance(distance: Distance): Observable<Distance> {
    return this.http.post<Distance>(this.setDistanceRoute, distance);
  }
 
  public setOptimizedBoxFilter(useOptimizedBoxFilter: boolean): Observable<JsonSimpleValue> {
    const sValue: JsonSimpleValue = {
      name: 'UseOptimizedBoxFilter',
      value: useOptimizedBoxFilter
    };
 
    return this.http.post<JsonSimpleValue>(`${this.setOptimizedBoxFilterRoute}`, sValue);
  }
 
  public setFilterRadius(filterRadius: number): Observable<JsonSimpleValue> {
    return this.http.put<JsonSimpleValue>(`${this.setFilterRadiusRoute}/${filterRadius}`, '');
  }
 
  public setFilterPasses(filterPasses: number): Observable<JsonSimpleValue> {
    return this.http.put<JsonSimpleValue>(`${this.setFilterPassesRoute}/${filterPasses}`, '');
  }
 
  public setFilterThreads(filterThreads: number): Observable<JsonSimpleValue> {
    return this.http.put<JsonSimpleValue>(`${this.setFilterThreadsRoute}/${filterThreads}`, '');
  }
 
  public setMinAngle(minAngle: number): Observable<JsonSimpleValue> {
    return this.http.post<JsonSimpleValue>(this.setMinAngleRoute, minAngle);
  }
 
  public setLimitationFilterType(filterSettings: FilterSettings): Observable<JsonSimpleValue> {
    return this.http.post<JsonSimpleValue>(this.setLimitationFilterTypeRoute, filterSettings);
  }
 
  public getCanRestore(): Observable<JsonSimpleValue> {
    return this.http.get<JsonSimpleValue>(this.canRestoreRoute);
  }
 
  public getZeroPlaneDistance(): Observable<Distance> {
    return this.http.get<Distance>(this.getZeroPlaneDistanceRoute);
  }
 
  public initializeAdvancedLimitationFilter(): Observable<JsonSimpleValue> {
    return this.http.get<JsonSimpleValue>(this.initializeAdvancedLimitationFilterRoute);
  }
 
  public resetAdvancedLimitationFilter(): Observable<JsonSimpleValue> {
    return this.http.get<JsonSimpleValue>(this.resetAdvancedLimitationFilterRoute);
  }
 
  public isLimitationFilterInitialized(): Observable<JsonSimpleValue> {
    return this.http.get<JsonSimpleValue>(this.limitationFilterInitStateRoute);
  }
 
  public isLimitationFilterInitializing(): Observable<JsonSimpleValue> {
    return this.http.get<JsonSimpleValue>(this.limitationFilterInitializingRoute);
  }
 
  public restore(): Observable<TrackingServerAppSettings> {
    return this.http.get<TrackingServerAppSettings>(this.restoreRoute);
  }
 
  public reset(): Observable<TrackingServerAppSettings> {
    return this.http.get<TrackingServerAppSettings>(this.resetRoute);
  }
 
  public saveSettings(settings: TrackingServerAppSettings): Observable<object> {
    return this.http.post<object>(this.saveSettingsRoute, settings);
  }
 
}