File

src/app/shared/components/sidebar/sidebar-interview-list/sidebar-interview-list.component.ts

Implements

OnInit

Metadata

selector app-sidebar-interview-list
styleUrls ./sidebar-interview-list.component.scss
templateUrl ./sidebar-interview-list.component.html

Index

Properties
Methods

Constructor

constructor(store: Store, menuService: NbMenuService)
Parameters :
Name Type Optional
store Store No
menuService NbMenuService No

Methods

cropTitle
cropTitle(s: string, n: number)
Parameters :
Name Type Optional
s string No
n number No
Returns : string
ngOnInit
ngOnInit()
Returns : void

Properties

audit$
Type : Observable<Audit>
auditId$
Type : Observable<number>
Decorators :
@Select(AppRouterState.auditId)
items
Type : NbMenuItem[]
import { Component, OnInit } from '@angular/core';
import { Store, Select } from '@ngxs/store';
import { AuditState } from 'src/app/core/ngxs/audit.state';
import { Observable } from 'rxjs';
import { Audit } from 'src/app/core/data/models/audit.model';
import { NbMenuItem, NbMenuService } from '@nebular/theme';
import { AppRouterState } from 'src/app/core/ngxs/app-router.state';

@Component({
  selector: 'app-sidebar-interview-list',
  templateUrl: './sidebar-interview-list.component.html',
  styleUrls: ['./sidebar-interview-list.component.scss'],
})
export class SidebarInterviewListComponent implements OnInit {
  @Select(AppRouterState.auditId) auditId$: Observable<number>;

  audit$: Observable<Audit>;
  items: NbMenuItem[];

  constructor(private store: Store, private menuService: NbMenuService) {}

  ngOnInit() {
    this.menuService.onItemClick().subscribe(x => {
      const el = document.getElementById(x.item.data);
      el?.scrollIntoView({ behavior: 'smooth', block: 'center' });
    });

    this.auditId$.subscribe(id => {
      this.audit$ = this.store.select(AuditState.audit(id));
    });

    this.items = [];
    this.audit$.subscribe(audit => {
      if (!audit) return;

      for (const factor of audit.scope.filter(fc => !fc.referenceId)) {
        const criterias = audit.scope.filter(fc => !fc.referenceId);

        const menuItem: NbMenuItem = {
          title: this.cropTitle(factor.name, 25),
          data: factor.id,
        };

        if (criterias.length > 0) {
          menuItem.children = criterias.map(c => {
            return { title: this.cropTitle(c.name, 25), data: c.id };
          });
        }

        this.items.push(menuItem);
      }
    });
  }

  cropTitle(s: string, n: number): string {
    if (s.length < n) return s;

    return s.substr(0, n) + '...';
  }
}
<h6 style="margin: 0;">Faktoren & Kriterien</h6>
<nb-menu *ngIf="items.length > 0; else noScope" style="padding-left: 5px;" [items]="items" autoCollapse> </nb-menu>

<ng-template #noScope>
  <div class="no-scope-wrapper label">
    Leerer Scope
  </div>
</ng-template>

./sidebar-interview-list.component.scss

.no-scope-wrapper {
  margin-top: 50px;
  text-align: center;
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""