components/plots/plots.component.ts
Disaggregation plot with select menu of component.
| changeDetection | ChangeDetectionStrategy.OnPush |
| host | { |
| selector | app-plots |
| imports |
NshmpHazardDisaggPlotComponent
MatDivider
MatFormField
MatLabel
MatSelect
MatOption
AsyncPipe
ReactiveFormsModule
MatIcon
MatButton
AsyncPipe
|
| templateUrl | ./plots.component.html |
| styleUrl | ./plots.component.scss |
Properties |
Methods |
| exportReport |
exportReport()
|
|
Defined in components/plots/plots.component.ts:58
|
|
Print report
Returns :
void
|
| disaggData |
Default value : this.service.disaggData
|
|
Defined in components/plots/plots.component.ts:44
|
|
Disaggregation response data state |
| filename$ |
Type : Observable<string>
|
Default value : this.form.valueChanges.pipe(
map(
values =>
`disagg-${values.disaggComponent}-${values.vs30}-${values.imt}-${values.returnPeriod}.png`,
),
)
|
|
Defined in components/plots/plots.component.ts:50
|
| form |
Default value : this.service.formGroup
|
|
Defined in components/plots/plots.component.ts:46
|
|
Form field state |
| service |
Default value : inject(AppService)
|
|
Defined in components/plots/plots.component.ts:40
|
| serviceResponse |
Default value : this.service.serviceResponse
|
|
Defined in components/plots/plots.component.ts:48
|
|
Disaggreagtion service response |
| templateService |
Default value : inject(NshmpTemplateService)
|
|
Defined in components/plots/plots.component.ts:41
|
import {AsyncPipe} from '@angular/common';
import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
import {ReactiveFormsModule} from '@angular/forms';
import {MatButton} from '@angular/material/button';
import {MatOption} from '@angular/material/core';
import {MatDivider} from '@angular/material/divider';
import {MatFormField, MatLabel} from '@angular/material/form-field';
import {MatIcon} from '@angular/material/icon';
import {MatSelect} from '@angular/material/select';
import {NshmpHazardDisaggPlotComponent} from '@ghsc/nshmp-lib-ng/hazard';
import {NshmpTemplateService} from '@ghsc/nshmp-template';
import {map, Observable} from 'rxjs';
import {AppService} from '../../services/app.service';
/**
* Disaggregation plot with select menu of component.
*/
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
host: {id: 'hazard-disagg-plots'},
imports: [
NshmpHazardDisaggPlotComponent,
MatDivider,
MatFormField,
MatLabel,
MatSelect,
MatOption,
AsyncPipe,
ReactiveFormsModule,
MatIcon,
MatButton,
AsyncPipe,
],
selector: 'app-plots',
styleUrl: './plots.component.scss',
templateUrl: './plots.component.html',
})
export class PlotsComponent {
service = inject(AppService);
templateService = inject(NshmpTemplateService);
/** Disaggregation response data state */
disaggData = this.service.disaggData;
/** Form field state */
form = this.service.formGroup;
/** Disaggreagtion service response */
serviceResponse = this.service.serviceResponse;
filename$: Observable<string> = this.form.valueChanges.pipe(
map(
values =>
`disagg-${values.disaggComponent}-${values.vs30}-${values.imt}-${values.returnPeriod}.png`,
),
);
/** Print report */
exportReport(): void {
print();
}
}
<div class="grid-row grid-gap print-display-none">
<!-- Print report button -->
<div>
<button
matButton="elevated"
class="primary"
[disabled]="disaggData() === undefined"
(click)="exportReport()"
>
<mat-icon>print</mat-icon>
Print Report (PDF)
</button>
</div>
<!-- Export summary button -->
<div>
<button
matButton="elevated"
class="primary save-report-button"
[disabled]="disaggData() === undefined"
(click)="service.saveSummaryReport()"
>
<mat-icon>file_save</mat-icon>
Save Report (TXT)
</button>
</div>
</div>
<mat-divider />
<!-- Select component -->
<mat-form-field class="grid-col-12 padding-top-4 disagg-component-select print-display-none">
<mat-label> Component </mat-label>
<mat-select
[formControl]="form.controls.disaggComponent"
[panelClass]="[
(templateService.isSmallScreen$ | async) ? 'small-screen' : '',
'disagg-component-select-overlay',
]"
>
@for (disagg of disaggData()?.data; track disagg) {
<mat-option [value]="disagg?.component">
{{ disagg?.component }}
</mat-option>
}
</mat-select>
</mat-form-field>
<!-- Disagg plot -->
<nshmp-hazard-disagg-plot
[inputs]="{
component: form.value.disaggComponent,
imt: form.value.imt,
responseData: serviceResponse()?.response,
filename: filename$ | async,
}"
/>