49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
|
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();
|
||
|
});
|
||
|
}
|
||
|
}
|