import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
import {Params} from '@angular/router';
import {GmmAppQuery, GmmAppQueryImt, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
import {ConnectedApplication, NshmpConnectedApplicationsComponent} from '@ghsc/nshmp-lib-ng/nshmp';
import {apps} from 'projects/nshmp-apps/src/shared/utils/applications.utils';
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.magnitude,
description:
'Open the Ground Motion vs. Magnitude application using the current controls inputs',
queryParams: () => this.magnitudeParams(),
},
{
application: apps().gmm.spectra,
description: 'Open the Reponse Spectra application using the current controls inputs',
queryParams: () => this.spectraParams(),
},
];
private magnitudeParams(): Params {
const values = this.formGroup.getRawValue();
const params: Partial<GmmAppQueryImt> = {
dampingMulti: values.dampingMulti?.toString(),
dip: values.dip?.toString(),
gmm: gmmUtils.gmmSourceToQuery(values.gmmSource),
gmmGroupType: values.gmmGroupType,
imt: values.imt,
multiSelectableParam: values.multiSelectableParam,
showEpistemicUncertainty: values.showEpistemicUncertainty?.toString(),
vs30: values.vs30?.toString(),
vs30Multi: values?.vs30Multi?.toString(),
width: values.width?.toString(),
z1p0: values.z1p0?.toString(),
z2p5: values.z2p5?.toString(),
zSed: values?.zSed?.toString(),
zTor: values.zTor?.toString(),
};
return params;
}
private spectraParams(): Params {
const values = this.formGroup.getRawValue();
const params: Partial<GmmAppQuery> = {
dampingMulti: values.dampingMulti?.toString(),
dip: values.dip?.toString(),
gmm: gmmUtils.gmmSourceToQuery(values.gmmSource),
gmmGroupType: values.gmmGroupType,
multiSelectableParam: values.multiSelectableParam,
Mw: values.Mw?.toString(),
MwMulti: values.MwMulti?.toString(),
showEpistemicUncertainty: values.showEpistemicUncertainty?.toString(),
vs30: values.vs30?.toString(),
vs30Multi: values?.vs30Multi?.toString(),
width: values.width?.toString(),
z1p0: values.z1p0?.toString(),
z2p5: values.z2p5?.toString(),
zSed: values?.zSed?.toString(),
zTor: values.zTor?.toString(),
};
return params;
}
}