File

src/app/pages/containers/clients/clients.component.ts

Implements

OnInit

Metadata

selector app-clients
templateUrl ./clients.component.html

Index

Properties
Methods

Constructor

constructor(clientService: ClientService, projectService: ProjectService, activatedRoute: ActivatedRoute, router: Router)
Parameters :
Name Type Optional
clientService ClientService No
projectService ProjectService No
activatedRoute ActivatedRoute No
router Router No

Methods

getProjects
getProjects()
Returns : any
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()
Returns : any
onProjectChange
onProjectChange(d)
Parameters :
Name Optional
d No
Returns : void
Async updateClients
updateClients()
Returns : any

Properties

__
Default value : strings
clients
Type : | void
loading
Default value : false
projectId
projects
Type : [Project]
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
Component
Html element with directive

result-matching ""

    No results matching ""