datasurvey/src/main/webapp/app/admin/logs/logs.component.ts

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();
});
}
}