File

components/disagg-contributors/disagg-contributors.component.ts

Extends

DisaggSource

Index

Properties

Properties

epsilon
epsilon: number
Type : number
import {DecimalPipe, NgClass} from '@angular/common';
import {ChangeDetectionStrategy, Component, computed, inject, input, Signal} from '@angular/core';
import {MatButton} from '@angular/material/button';
import {MatDivider} from '@angular/material/divider';
import {MatIcon} from '@angular/material/icon';
import {FormatLatitudePipe, FormatLongitudePipe} from '@ghsc/nshmp-lib-ng/hazard';
import {
  DisaggComponentData,
  DisaggSource,
} from '@ghsc/nshmp-utils-ts/libs/nshmp-haz/www/disagg-service';

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

interface DisaggSourceEpsilon extends DisaggSource {
  epsilon: number;
}

/**
 * Table with disaggregation contributions from service response.
 */
@Component({
  changeDetection: ChangeDetectionStrategy.OnPush,
  host: {id: 'hazard-disagg-disagg-contributors'},
  imports: [
    MatDivider,
    NgClass,
    DecimalPipe,
    FormatLatitudePipe,
    FormatLongitudePipe,
    MatIcon,
    MatButton,
  ],
  selector: 'app-disagg-contributors',
  styleUrl: './disagg-contributors.component.scss',
  templateUrl: './disagg-contributors.component.html',
})
export class DisaggContributorsComponent {
  service = inject(AppService);

  /** Disaggregation component data state */
  readonly componentData = input.required<DisaggComponentData>();

  readonly showExportButton = input(true);

  readonly sources: Signal<DisaggSourceEpsilon[]> = computed(() => {
    const componentData = this.componentData();

    if (componentData) {
      return componentData?.sources.map(source => ({
        ...source,
        epsilon: source.ε,
      }));
    } else {
      return [];
    }
  });

  /** Form field state */
  form = this.service.formGroup;

  /** Disaggregation service response state */
  serviceResponse = this.service.serviceResponse;
}

results matching ""

    No results matching ""