Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | 111x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 3x 3x 3x 3x 3x 3x 2x 2x 2x 2x 3x 2x 110x | import { Component, OnInit, inject } from '@angular/core';
import { EventRule } from '../../models/events';
import { TwinpadApiService } from '../../services/twinpad-api.service';
import { ListResponse } from '../../models/response';
import { LoaderComponent } from '../loader/loader.component';
import { EmptyPlaceholderComponent } from '../empty-placeholder/empty-placeholder.component';
import { TableModule, TableLazyLoadEvent, TablePageEvent } from 'primeng/table';
import { ButtonModule } from 'primeng/button';
import { ActivatedRoute, Router, RouterLink } from '@angular/router';
import { HttpErrorResponse } from '@angular/common/http';
import { ErrorComponent } from '../error/error.component';
@Component({
selector: 'app-event-rules',
imports: [ErrorComponent, LoaderComponent, EmptyPlaceholderComponent, TableModule, ButtonModule, RouterLink],
templateUrl: './event-rules.component.html',
styleUrl: './event-rules.component.scss'
})
export class EventRulesComponent implements OnInit {
private twinpadApiService = inject(TwinpadApiService);
private route = inject(ActivatedRoute);
private router = inject(Router);
isLoading: boolean;
eventRulesResponse: ListResponse<EventRule>;
offset: number = 0;
limit: number = 10;
sortBy: string[] = ["name"];
defaultRowOptions = [10, 20, 50];
filteredRowsPerPageOptions: number[] = [];
error: HttpErrorResponse;
ngOnInit(): void {
this.isLoading = true;
this.route.queryParamMap.subscribe(params => {
this.limit = Number(params.get('rows')) || 10;
this.offset = Number(params.get('offset')) || 0;
const newSortBy = params.get('sortBy');
Iif (newSortBy){
this.sortBy = newSortBy.split(',');
}
this.updateRowsPerPageOptions();
this.getData();
});
}
getData(){
this.isLoading = true;
this.twinpadApiService.getEventRules(this.limit, this.offset, this.sortBy).subscribe({next: (value) => {
this.eventRulesResponse = value;
this.isLoading = false;
},
error: (error)=>{
this.error = error;
}
});
}
loadEventRules(event: TableLazyLoadEvent){
this.isLoading = true;
Eif (event.first !== null && event.first !== undefined){
this.offset = event.first;
}
Eif (event.rows !== null && event.rows !== undefined){
this.limit = event.rows;
}
if (event.sortField !== undefined && event.sortField !== null){
Eif (typeof(event.sortField) === 'string'){
this.sortBy = [event.sortField];
}
else{
this.sortBy = event.sortField;
}
Eif (event.sortOrder != null){
this.sortBy[0] += ':'+event.sortOrder;
}
}
this.getData();
}
onTableEvent(event: TablePageEvent){
this.offset = event.first;
this.limit = event.rows;
this.router.navigate([], {
queryParams: { offset: this.offset, rows: this.limit },
queryParamsHandling: 'merge'
});
}
updateRowsPerPageOptions(){
this.filteredRowsPerPageOptions = [...new Set([...this.defaultRowOptions, this.limit])].sort((a, b) => a - b);
}
}
|