gemini/sample-apps/genwealth/ui/src/app/prospects/prospects.component.ts (75 lines of code) (raw):

import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { GenWealthServiceClient, Prospect, QueryResponse } from '../services/genwealth-api'; import { Observable, catchError } from 'rxjs'; import { MatButtonModule } from '@angular/material/button'; import { MatInputModule } from '@angular/material/input'; import { FormsModule } from '@angular/forms'; import { MatCardModule } from '@angular/material/card'; import { MatSliderModule } from '@angular/material/slider'; import { MatSlideToggleChange, MatSlideToggleModule } from '@angular/material/slide-toggle'; import { ProspectResultsComponent } from './results/prospect-results.component'; import { MatIconModule } from '@angular/material/icon'; import { MatTooltipModule } from '@angular/material/tooltip'; import { SnackBarErrorComponent } from '../common/SnackBarErrorComponent'; @Component({ selector: 'app-prospects', standalone: true, imports: [ CommonModule, MatButtonModule, FormsModule, MatInputModule, MatCardModule, MatSliderModule, MatSlideToggleModule, MatIconModule, MatTooltipModule, ProspectResultsComponent, ], templateUrl: './prospects.component.html', styleUrl: './prospects.component.scss' }) export class ProspectsComponent { constructor( private genWealthClient: GenWealthServiceClient, private error: SnackBarErrorComponent) {} prospectSearch: string = ''; useFilters: boolean = false; minAge: number = 21; maxAge: number = 65; riskProfile: number = 1; prospects?: Observable<QueryResponse<Prospect>> = undefined; useFiltersChange(change: MatSlideToggleChange) { this.useFilters = change.checked; } formatRiskLabel(value: number): string { switch (value) { case 1: return 'low'; case 2: return 'medium'; case 3: return 'high'; default: return ''; } } findProspects() { let riskFilter: string | undefined = this.useFilters ? this.formatRiskLabel(this.riskProfile) : undefined; let minAgeFilter: number | undefined = this.useFilters ? this.minAge : undefined; let maxAgeFilter: number | undefined = this.useFilters ? this.maxAge : undefined; console.log('finding...', this.prospectSearch, riskFilter, minAgeFilter, maxAgeFilter); this.prospects = this.genWealthClient.semanticSearchProspects(this.prospectSearch, riskFilter, minAgeFilter, maxAgeFilter).pipe( catchError((err) => { this.error.showError('Unable to search investments', err); return []; }) ); } }