apt-maintenance-account
Version:
Apartment Maintenance Account Tracking Application - Client Side in Angular
73 lines (58 loc) • 1.87 kB
text/typescript
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/switchMap';
import { User } from './model';
import { Authorization } from '../authorization/model';
import { environment } from '../../environments/environment';
import { UserService } from './service';
export class UserListComponent implements OnInit {
models: Observable<User[]>;
authzn: Authorization;
addAllowed: boolean = false;
private selectedId: number;
totalRecords: number = 0;
caption: string = 'User List of ' + environment.brand;
constructor(
private service: UserService,
private route: ActivatedRoute,
private router: Router
) { }
ngOnInit(): void {
this.getList();
}
onSelect(model: User): void {
this.router.navigate(['/users', model.id]);
}
isSelected(model: User) {
return model ? model.id === this.selectedId : false;
}
add(): void {
this.router.navigate(['/users', 0]); // 0 represent new user
}
delete(model: User): void {
this.service
.delete(model.id)
.then(() => {
this.models = this.models.do(res => { }); // just resets the models
this.totalRecords--;
});
}
private getList(): void {
this.authzn = this.service.getAuthzn();
this.addAllowed = this.authzn.allowsAdd();
this.models = this.route.params
.switchMap((params: Params) => {
this.selectedId = +params['id'];
return this.service.getList();
});
this.models.subscribe((models) => {
this.totalRecords = models.length; // sets total users
});
}
}