import { Component, OnInit } from '@angular/core'; import { Log, LoggersResponse, Level } from './log.model'; import { LogsService } from './logs.service'; @Component({ selector: 'jhi-logs', templateUrl: './logs.component.html', }) export class LogsComponent implements OnInit { loggers?: Log[]; filteredAndOrderedLoggers?: Log[]; filter = ''; orderProp: keyof Log = 'name'; ascending = true; constructor(private logsService: LogsService) {} ngOnInit(): void { this.findAndExtractLoggers(); } changeLevel(name: string, level: Level): void { this.logsService.changeLevel(name, level).subscribe(() => this.findAndExtractLoggers()); } filterAndSort(): void { this.filteredAndOrderedLoggers = this.loggers!.filter( logger => !this.filter || logger.name.toLowerCase().includes(this.filter.toLowerCase()) ).sort((a, b) => { if (a[this.orderProp] < b[this.orderProp]) { return this.ascending ? -1 : 1; } else if (a[this.orderProp] > b[this.orderProp]) { return this.ascending ? 1 : -1; } else if (this.orderProp === 'level') { return a.name < b.name ? -1 : 1; } return 0; }); } private findAndExtractLoggers(): void { this.logsService.findAll().subscribe((response: LoggersResponse) => { this.loggers = Object.entries(response.loggers).map(([key, logger]) => new Log(key, logger.effectiveLevel)); this.filterAndSort(); }); } }