File

components/connected-applications/connected-applications.component.ts

Metadata

Index

Properties
Methods

Methods

Private distanceParameters$
distanceParameters$()
Returns : Observable<ConnectedApplicationParameter[]>
Private spectraParameters$
spectraParameters$()
Returns : Observable<ConnectedApplicationParameter[]>

Properties

connectedApplications
Type : ConnectedApplication[]
Default value : [ { application: apps().gmm.distance, description: 'Open the Ground Motion vs. Distance application using the current controls inputs', parameters$: this.distanceParameters$(), }, { application: apps().gmm.spectra, description: 'Open the Reponse Spectra application using the current controls inputs', parameters$: this.spectraParameters$(), }, ]
Private formGroup
Default value : this.service.formGroup
Private service
Default value : inject(AppService)
import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
import {gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
import {
  ConnectedApplication,
  ConnectedApplicationParameter,
  NshmpConnectedApplicationsComponent,
} from '@ghsc/nshmp-lib-ng/nshmp';
import {apps} from 'projects/nshmp-apps/src/shared/utils/applications.utils';
import {map, Observable} from 'rxjs';

import {AppService} from '../../services/app.service';

@Component({
  changeDetection: ChangeDetectionStrategy.OnPush,
  imports: [NshmpConnectedApplicationsComponent],
  selector: 'app-connected-applications',
  styleUrl: './connected-applications.component.scss',
  templateUrl: './connected-applications.component.html',
})
export class ConnectedApplicationsComponent {
  private service = inject(AppService);

  private formGroup = this.service.formGroup;

  connectedApplications: ConnectedApplication[] = [
    {
      application: apps().gmm.distance,
      description:
        'Open the Ground Motion vs. Distance application using the current controls inputs',
      parameters$: this.distanceParameters$(),
    },
    {
      application: apps().gmm.spectra,
      description: 'Open the Reponse Spectra application using the current controls inputs',
      parameters$: this.spectraParameters$(),
    },
  ];

  private distanceParameters$(): Observable<ConnectedApplicationParameter[]> {
    return this.formGroup.valueChanges.pipe(
      map(values => {
        const parameters: ConnectedApplicationParameter[] = [
          {
            gridColumn: 12,
            key: 'gmm',
            keyDisplay: 'Ground Motion Models',
            value: gmmUtils.gmmSourceToQuery(values.gmmSource ?? []),
            valueDisplay: values.gmmSource?.map(gmmSource => gmmSource.gmm.display),
          },
          {key: 'dip', units: '°', value: values.dip},
          {key: 'gmmGroupType', value: values.gmmGroupType},
          {key: 'imt', value: values.imt},
          {key: 'multiSelectableParam', value: values.multiSelectableParam},
          {key: 'showEpistemicUncertainty', value: values.showEpistemicUncertainty},
          {key: 'vs30', units: 'm/s', value: values.vs30},
          {key: 'vs30Multi', value: values?.vs30Multi},
          {key: 'width', units: 'km', value: values.width},
          {key: 'z1p0', keyDisplay: 'Z<sub>1.0</sub>', units: 'km', value: values.z1p0},
          {key: 'z2p5', keyDisplay: 'Z<sub>2.5</sub>', units: 'km', value: values.z2p5},
          {key: 'zSed', keyDisplay: 'Z<sub>SED</sub>', units: 'km', value: values?.zSed},
          {key: 'zTor', keyDisplay: 'Z<sub>TOR</sub>', units: 'km', value: values.zTor},
        ];

        return parameters;
      }),
    );
  }

  private spectraParameters$(): Observable<ConnectedApplicationParameter[]> {
    return this.formGroup.valueChanges.pipe(
      map(values => {
        const parameters: ConnectedApplicationParameter[] = [
          {
            gridColumn: 12,
            key: 'gmm',
            keyDisplay: 'Ground Motion Models',
            value: gmmUtils.gmmSourceToQuery(values.gmmSource ?? []),
            valueDisplay: values.gmmSource?.map(gmmSource => gmmSource.gmm.display),
          },
          {key: 'dip', units: '°', value: values.dip},
          {key: 'gmmGroupType', value: values.gmmGroupType},
          {key: 'Mw', value: values.Mw},
          {key: 'MwMulti', value: values.MwMulti},
          {key: 'multiSelectableParam', value: values.multiSelectableParam},
          {key: 'showEpistemicUncertainty', value: values.showEpistemicUncertainty},
          {key: 'vs30', units: 'm/s', value: values.vs30},
          {key: 'vs30Multi', value: values?.vs30Multi},
          {key: 'width', units: 'km', value: values.width},
          {key: 'z1p0', keyDisplay: 'Z<sub>1.0</sub>', units: 'km', value: values.z1p0},
          {key: 'z2p5', keyDisplay: 'Z<sub>2.5</sub>', units: 'km', value: values.z2p5},
          {key: 'zSed', keyDisplay: 'Z<sub>SED</sub>', units: 'km', value: values?.zSed},
          {key: 'zTor', keyDisplay: 'Z<sub>TOR</sub>', units: 'km', value: values.zTor},
        ];

        return parameters;
      }),
    );
  }
}
<nshmp-connected-applications [applications]="connectedApplications" />
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""