gemini/sample-apps/genwealth/ui/src/app/prospects/results/prospect-results.component.ts (66 lines of code) (raw):
import { Component, Input, OnInit } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { animate, state, style, transition, trigger } from '@angular/animations';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
import { Observable } from 'rxjs';
import { Prospect, QueryResponse } from '../../services/genwealth-api';
import { TextToHtmlPipe } from '../../common/text-to-html.pipe';
import { SqlStatementComponent } from '../../common/sql-statement/sql-statement.component';
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
@Component({
selector: 'app-prospect-results',
standalone: true,
imports: [
CommonModule,
RouterModule,
MatTableModule,
MatButtonModule,
SqlStatementComponent,
MatIconModule,
TextToHtmlPipe,
],
templateUrl: './prospect-results.component.html',
styleUrl: './prospect-results.component.scss',
animations: [
trigger('detailExpand', [
state('collapsed,void', style({height: '0px', minHeight: '0'})),
state('expanded', style({height: '*'})),
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
]),
],
})
export class ProspectResultsComponent implements OnInit {
constructor(private breakpointObserver: BreakpointObserver) {}
@Input()
set prospects(observable: Observable<QueryResponse<Prospect>>) {
observable.subscribe({ next: response => {
if (response.data)
this.dataSource.data = response.data;
this.query = response.query;
}});
}
columnsToDisplaySmall: string[] = ['id', 'firstName','lastName'];
columnsToDisplayLarge: string[] =[...this.columnsToDisplaySmall, 'email','age','riskProfile'];
columnsToDisplay: string[] = this.columnsToDisplayLarge;
columnsToDisplayWithExpand: string[] = [];
expandedElement?: Prospect | null;
dataSource = new MatTableDataSource<Prospect>();
query?: string = undefined;
ngOnInit() {
this.breakpointObserver
.observe([Breakpoints.Handset])
.subscribe(_ => {
if (this.breakpointObserver.isMatched(Breakpoints.Handset)) {
console.log('Handset');
this.columnsToDisplay = this.columnsToDisplaySmall;
} else {
console.log('Big');
this.columnsToDisplay = this.columnsToDisplayLarge;
}
this.columnsToDisplayWithExpand = [...this.columnsToDisplay, 'expand'];
});
}
}