File

src/app/database/db-selector/db-selector.component.ts

Description

Build selector component

Implements

OnInit OnChanges

Metadata

selector app-db-selector
styleUrls db-selector.component.css
templateUrl ./db-selector.component.html

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor()

Create a build selector component

Inputs

builds

Input builds data

Type: literal type[]

profName

Input profession name

Type: string

Outputs

selectedBuildEmit

Output selected build and override

$event type: EventEmitter

Methods

getClass
getClass()

Get css class associated to the build

Returns : any
ngOnChanges
ngOnChanges()

Todo on input change

Returns : void
ngOnInit
ngOnInit()

Todo on init

Returns : void
onSelect
onSelect(selectedBuild: literal type)

On select build event

Parameters :
Name Type Optional Description
selectedBuild literal type no

Selected build

Returns : void
onSelectOverride
onSelectOverride(selectedOverride: string)

On select override event

Parameters :
Name Type Optional Description
selectedOverride string no

Selected override

Returns : void

Properties

Private filter
filter: string
Type : string
Default value : ''

Search bar filter

Private selectedBuild
selectedBuild: literal type
Type : literal type

Selected build

Private selectedBuildOverrides
selectedBuildOverrides: string[]
Type : string[]

Selected build overrides

Private selectedOverride
selectedOverride: string
Type : string

Selected build

import { Component, OnInit, Input, Output, OnChanges, EventEmitter } from '@angular/core';
import { ProfBuild } from '../../helpers/profBuild';

/**
 * Build selector component
 */
@Component({
  selector: 'app-db-selector',
  templateUrl: './db-selector.component.html',
  styleUrls: ['./db-selector.component.css']
})
export class DbSelectorComponent implements OnInit, OnChanges {

  /**
   * Input builds data
   */
  @Input() builds: { name: string, id: string, overrides: string[] }[];
  /**
   * Input profession name
   */
  @Input() profName: string;
  /**
   * Output selected build and override
   */
  @Output() selectedBuildEmit = new EventEmitter<{ name: string, id: string, override: string }>();
  /**
   * Selected build
   */
  private selectedBuild: { name: string, id: string, override: string };
  /**
   * Selected build overrides
   */
  private selectedBuildOverrides: string[];
  /**
   * Selected build
   */
  private selectedOverride: string;
  /**
   * Search bar filter
   */
  private filter = '';

  /**
   * Create a build selector component
   */
  constructor() { }

  /**
   * Todo on init
   */
  ngOnInit() {
    this.selectedOverride = 'Main';
  }

  /**
   * Todo on input change
   */
  ngOnChanges() {
    this.selectedBuild = null;
    this.selectedOverride = 'Main';
  }

  /**
   * On select build event
   * @param selectedBuild Selected build
   */
  onSelect(selectedBuild: { name: string, id: string, overrides: string[] }) {
    if (this.selectedBuild && selectedBuild && this.selectedBuild.id === selectedBuild.id) {
      return;
    }
    this.selectedOverride = 'Main';
    this.selectedBuild = selectedBuild !== null ?
          { name: selectedBuild.name, id: selectedBuild.id, override: this.selectedOverride } : null;
    this.selectedBuildOverrides = selectedBuild !== null ? selectedBuild.overrides : null;
    this.selectedBuildEmit.emit(this.selectedBuild);
  }

  /**
   * On select override event
   * @param selectedOverride Selected override
   */
  onSelectOverride(selectedOverride: string) {
    this.selectedOverride = selectedOverride;
    this.selectedBuild.override = selectedOverride;
    this.selectedBuildEmit.emit(this.selectedBuild);
  }

  /**
   * Get css class associated to the build
   */
  getClass() {
    const res: any = {};
    res[this.profName] = true;
    res['my-prof-build'] = true;
    res['uk-text-center'] = true;
    return res;
  }

}
<div *ngIf='builds'>
  <div class='uk-flex uk-flex-column uk-margin-large-top uk-margin-large-bottom'>
    <div class='uk-flex uk-flex-column '>
      <div *ngIf="selectedBuild" (click)="onSelect(null)" [class.selected]="true" [ngClass]='getClass()'>
        <span class='my-text-large uk-text-bold'>{{selectedBuild.name}}</span>
      </div>

      <div *ngIf="!selectedBuild" [class.selected]="true" [ngClass]='getClass()'>
        <span class='my-text-large uk-text-bold'>Build sélectionné</span>
      </div>
      <div class="uk-flex uk-flex-center uk-margin-top">
        <div>
          <input [(ngModel)]="filter" (click)="onSelect(null)" class="my-search my-search-input uk-text-bold" placeholder="">
        </div>
      </div>


    </div>
    <div class="my-scrollable-panel uk-margin-top">
      <div class="uk-flex uk-flex-row">
        <div class="build-selector">
          <div *ngFor="let build of (builds | dbSearch: filter)" (click)="onSelect(build)" [class.selected]="selectedBuild && build.id === selectedBuild.id"
            [ngClass]='getClass()'>
            <span class='my-text-large uk-text-bold'>{{build.name}}</span>
          </div>
        </div>

        <div *ngIf="selectedBuild" class='variant-selector uk-margin-left'>
          <div *ngFor="let override of selectedBuildOverrides" (click)="onSelectOverride(override)" [class.selected]="selectedOverride === override"
            [ngClass]='getClass()'>
            <span class='my-text-large uk-text-bold'>{{override}}</span>
          </div>
        </div>

      </div>


    </div>
  </div>
</div>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""