All files / tools/ReFlex.TrackingServer/ClientApp/src/app/measure-surface measure-surface.component.ts

100% Statements 23/23
100% Branches 12/12
100% Functions 7/7
100% Lines 20/20

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 852x                       2x 2x 2x 2x 2x                           9x   4x 4x 4x 4x     4x               4x         3x     1x 1x           4x       16x 5x                 11x                  
import { CommonModule } from '@angular/common';
import {
  ChangeDetectionStrategy,
  ChangeDetectorRef,
  Component,
  OnDestroy,
  OnInit,
  inject
} from '@angular/core';
import { FormsModule } from '@angular/forms';
import { ElementPosition, FrameSizeDefinition } from '@reflex/shared-types';
import { Subscription } from 'rxjs';
import { CalibrationService } from 'src/shared/services/calibration.service';
import { markViewForCheck } from 'src/shared/util/mark-view-for-check';
import { LogService } from '../log/log.service';
import { MeasureControlsComponent } from './measure-controls/measure-controls.component';
import { MeasureGridComponent } from './measure-grid/measure-grid.component';
 
@Component({
  selector: 'app-measure-surface',
  templateUrl: './measure-surface.component.html',
  styleUrls: ['./measure-surface.component.scss'],
  changeDetection: ChangeDetectionStrategy.Eager,
  imports: [
    CommonModule,
    FormsModule,
    MeasureControlsComponent,
    MeasureGridComponent
  ]
})
export class MeasureSurfaceComponent implements OnInit, OnDestroy {
 
  public fullScreen = false;
  private readonly changeDetector = inject(ChangeDetectorRef);
  private readonly calibrationService = inject(CalibrationService);
  private readonly logService = inject(LogService);
 
  private frameSizeSubscription?: Subscription;
  private frameSize: FrameSizeDefinition = {
    top: 0,
    left: 0,
    width: 500,
    height: 400
  };
 
  public ngOnInit(): void {
    this.frameSizeSubscription = this.calibrationService
      .getFrameSize()
      .pipe(markViewForCheck(this.changeDetector))
      .subscribe(
        (result) => {
          this.frameSize = result;
        },
        (error) => {
          console.error(error);
          this.logService.sendErrorLog(`${error}`);
        }
      );
  }
 
  public ngOnDestroy(): void {
    this.frameSizeSubscription?.unsubscribe();
  }
 
  public getViewStyle(): ElementPosition {
    if (this.fullScreen) {
      return {
        position: 'absolute',
        top: `${this.frameSize.top}px`,
        left: `${this.frameSize.left}px`,
        width: `${this.frameSize.width}px`,
        height: `${this.frameSize.height}px`
      };
    }
 
    return {
      position: 'relative',
      top: `0`,
      left: `0`,
      width: `100%`,
      height: `40vh`
    };
  }
}