File
Implements
Metadata
| selector |
app-clients |
| templateUrl |
./clients.component.html |
Methods
|
getProjects
|
getProjects()
|
|
|
|
|
|
makeBackButton
|
makeBackButton()
|
|
|
|
Returns : { routerLink: {}; queryParams: string; name: string; }
|
|
makeQueryParams
|
makeQueryParams(clientId)
|
|
|
Parameters :
| Name |
Optional |
| clientId |
No
|
Returns : { project: any; client: any; }
|
|
makeState
|
makeState()
|
|
|
|
Returns : { projects: [any]; clients: void | [any]; }
|
|
Async
ngOnInit
|
ngOnInit()
|
|
|
|
|
|
onProjectChange
|
onProjectChange(d)
|
|
|
|
|
|
Async
updateClients
|
updateClients()
|
|
|
|
|
|
__
|
Default value : strings
|
|
|
|
loading
|
Default value : false
|
|
|
import {Component, OnInit} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Project} from '@app/pages/models/project';
import {ProjectService} from '@app/pages/services/project.service';
import {Client} from '@app/pages/models/client';
import {ClientService} from '@app/pages/services/client.service';
import strings from '@i18n/strings.json';
@Component({
selector: 'app-clients',
templateUrl: './clients.component.html',
// styleUrls: ['./clients.component.scss']
})
export class ClientsComponent implements OnInit {
__ = strings;
loading = false;
projectId;
clients: [Client] | void;
projects: [Project];
constructor(
private clientService: ClientService,
private projectService: ProjectService,
private activatedRoute: ActivatedRoute,
private router: Router) {}
async ngOnInit() {
this.projectId = this.activatedRoute.snapshot.queryParams.project;
this.projects = await this.getProjects();
this.updateClients();
}
getProjects() {
if (!this.projectId) { return; }
const {projects} = history.state;
return (projects ? projects : this.projectService.getAllProjects());
}
onProjectChange(d) {
console.log(d);
this.updateClients();
this.projectId = d.name;
this.router.navigate(['/clients'], {queryParams: {project: this.projectId}});
}
async updateClients() {
this.loading = true;
this.clients = await this.clientService.getAllClients();
this.loading = false;
}
makeState() {
return {projects: this.projects, clients: this.clients};
}
makeQueryParams(clientId) {
return {project: this.projectId, client: clientId};
}
makeBackButton() {
if (!this.projectId) { return; }
return {routerLink: ['/projects'], queryParams: '', name: 'Projects'};
}
}
<div class="my-3 my-md-5">
<div class="row">
<div class="col-md-2">
<app-left-sidebar [backButton]="makeBackButton()"></app-left-sidebar>
<div class="btn-group-vertical w-100 mb-3 mb-md-0" role="group" aria-label="Button group with nested dropdown">
<a class="btn btn-secondary btn-block tab-button" [routerLink]="['/global-clients']">Global Configurations</a>
<a class="btn btn-secondary btn-block tab-button active" [routerLink]="['/projects']">Projects</a>
</div>
</div>
<div class="col-md-8">
<div class="row mb-3">
<app-dropdown class="col-md-6" [data]="projects" [field]="'projectName'" [label]="__.project" [selected]="projectId" (change)="onProjectChange($event)"></app-dropdown>
</div>
<h2>{{__.selectAnApplication}}</h2>
<div class="row my-5" *ngIf="loading"><h2>{{__.loading}}</h2></div>
<div *ngIf="!loading" class="row my-3">
<div *ngFor="let client of clients" class="col-lg-4 mb-3">
<div class="card">
<a [routerLink]="['/configs']" [queryParams]="makeQueryParams(client.clientId)" [state]="makeState()">
<div class="card-body">
<h5 class="card-title">{{client.clientId}}</h5>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="col-md-2"></div>
</div>
</div>
Legend
Html element with directive