Add manage user i18n replacements
							parent
							
								
									e902ed5ec4
								
							
						
					
					
						commit
						ac604f4e08
					
				| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
<div class="input-group list-header pull-left">
 | 
					<div class="input-group list-header pull-left">
 | 
				
			||||||
  <mat-button-toggle-group #group="matButtonToggleGroup">
 | 
					  <mat-button-toggle-group #group="matButtonToggleGroup">
 | 
				
			||||||
    <mat-button-toggle *ngFor="let button of filterButtons" value="{{button.value}}" (change)="execute(group)">
 | 
					    <mat-button-toggle *ngFor="let button of filterButtons" value="{{button.value}}" (change)="execute(group)">
 | 
				
			||||||
      {{button.label}}
 | 
					      <span *ngIf="button.label !== fraction.BLUFOR && button.label !== fraction.OPFOR">{{button.label | translate}}</span>
 | 
				
			||||||
 | 
					      <span *ngIf="button.label === fraction.BLUFOR || button.label === fraction.OPFOR">{{button.label}}</span>
 | 
				
			||||||
    </mat-button-toggle>
 | 
					    </mat-button-toggle>
 | 
				
			||||||
  </mat-button-toggle-group>
 | 
					  </mat-button-toggle-group>
 | 
				
			||||||
  <button mat-icon-button
 | 
					  <button mat-icon-button
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
import {Component, EventEmitter, Input, Output} from '@angular/core';
 | 
					import {Component, EventEmitter, Input, Output} from '@angular/core';
 | 
				
			||||||
 | 
					import {Fraction} from '../../../utils/fraction.enum';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'cc-list-filter',
 | 
					  selector: 'cc-list-filter',
 | 
				
			||||||
| 
						 | 
					@ -15,6 +16,8 @@ export class ListFilterComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Output() openAddFrom = new EventEmitter();
 | 
					  @Output() openAddFrom = new EventEmitter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  readonly fraction = Fraction;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor() {
 | 
					  constructor() {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					import {Component} from '@angular/core';
 | 
				
			||||||
 | 
					import {TranslateService} from '@ngx-translate/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'cc-squads-root',
 | 
				
			||||||
 | 
					  templateUrl: './squads.component.html',
 | 
				
			||||||
 | 
					  styleUrls: ['./squads.component.scss']
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class SquadsComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(private translate: TranslateService) {
 | 
				
			||||||
 | 
					    this.translate.setDefaultLang('de');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ import {TranslateHttpLoader} from '@ngx-translate/http-loader';
 | 
				
			||||||
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
 | 
					import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function createTranslateLoader(http: HttpClient) {
 | 
					export function createTranslateLoader(http: HttpClient) {
 | 
				
			||||||
  return new TranslateHttpLoader(http, './assets/i18n/squad/', '.json');
 | 
					  return new TranslateHttpLoader(http, './assets/i18n/squads/', '.json');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,12 +3,12 @@ import {SquadListComponent} from './squad-list/squad-list.component';
 | 
				
			||||||
import {EditSquadComponent} from './edit-squad/edit-squad.component';
 | 
					import {EditSquadComponent} from './edit-squad/edit-squad.component';
 | 
				
			||||||
import {ModuleWithProviders} from '@angular/core';
 | 
					import {ModuleWithProviders} from '@angular/core';
 | 
				
			||||||
import {SquadItemComponent} from './squad-list/squad-item.component';
 | 
					import {SquadItemComponent} from './squad-list/squad-item.component';
 | 
				
			||||||
import {SquadComponent} from './squad.component';
 | 
					import {SquadsComponent} from './squads.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const squadsRoutes: Routes = [
 | 
					export const squadsRoutes: Routes = [
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    path: '',
 | 
					    path: '',
 | 
				
			||||||
    component: SquadComponent
 | 
					    component: SquadsComponent
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    path: '',
 | 
					    path: '',
 | 
				
			||||||
| 
						 | 
					@ -29,5 +29,5 @@ export const squadsRoutes: Routes = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const squadRouterModule: ModuleWithProviders = RouterModule.forChild(squadsRoutes);
 | 
					export const squadRouterModule: ModuleWithProviders = RouterModule.forChild(squadsRoutes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const squadsRoutingComponents = [SquadComponent, SquadItemComponent, SquadListComponent, EditSquadComponent];
 | 
					export const squadsRoutingComponents = [SquadsComponent, SquadItemComponent, SquadListComponent, EditSquadComponent];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
<form #form="ngForm" class="overview">
 | 
					<form #form="ngForm" class="overview">
 | 
				
			||||||
  <h3>Teilnehmer auszeichnen</h3>
 | 
					  <h3>{{'users.award.headline' | translate}}</h3>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="form-group">
 | 
					  <div class="form-group">
 | 
				
			||||||
    <label for="decoration">Auszeichnung</label>
 | 
					    <label for="decoration">{{'users.award.field.decoration' | translate}}</label>
 | 
				
			||||||
    <select class="form-control"
 | 
					    <select class="form-control"
 | 
				
			||||||
            name="decoration"
 | 
					            name="decoration"
 | 
				
			||||||
            id="decoration"
 | 
					            id="decoration"
 | 
				
			||||||
| 
						 | 
					@ -11,14 +11,13 @@
 | 
				
			||||||
            [ngModel]="0"
 | 
					            [ngModel]="0"
 | 
				
			||||||
            required
 | 
					            required
 | 
				
			||||||
            style="min-width: 200px;">
 | 
					            style="min-width: 200px;">
 | 
				
			||||||
      <option [value]="0">Auswählen...</option>
 | 
					      <option [value]="0">{{'users.award.field.decoration.placeholder' | translate}}</option>
 | 
				
			||||||
      <option *ngFor="let deco of decorations" [value]="deco._id">
 | 
					      <option *ngFor="let deco of decorations" [value]="deco._id">
 | 
				
			||||||
        {{deco.fraction == 'BLUFOR'? fraction.BLUFOR : deco.fraction == 'OPFOR'? fraction.OPFOR : 'Global'}}:
 | 
					        {{deco.fraction == 'BLUFOR'? fraction.BLUFOR : deco.fraction == 'OPFOR'? fraction.OPFOR : 'Global'}}:
 | 
				
			||||||
        {{deco.name}}
 | 
					        {{deco.name}}
 | 
				
			||||||
      </option>
 | 
					      </option>
 | 
				
			||||||
    </select>
 | 
					    </select>
 | 
				
			||||||
 | 
					    <show-error displayName="{{'users.award.field.decoration' | translate}}" controlPath="decoration"></show-error>
 | 
				
			||||||
    <show-error displayName="Auszeichnung" controlPath="decoration"></show-error>
 | 
					 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="div-table-row" [style.display]="decoPreviewDisplay" style="margin-top: 5px; margin-bottom:10px">
 | 
					  <div class="div-table-row" [style.display]="decoPreviewDisplay" style="margin-top: 5px; margin-bottom:10px">
 | 
				
			||||||
| 
						 | 
					@ -38,37 +37,40 @@
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="form-group">
 | 
					  <div class="form-group">
 | 
				
			||||||
    <label for="reason">Begründung</label>
 | 
					    <label for="reason">{{'users.award.field.reason' | translate}}</label>
 | 
				
			||||||
    <textarea class="form-control center-block" name="reason" [ngModel]="undefined" required
 | 
					    <textarea class="form-control center-block" name="reason" [ngModel]="undefined" required
 | 
				
			||||||
              id="reason" placeholder="Begründung eingeben..." rows="3" #awardTextArea></textarea>
 | 
					              id="reason" placeholder="{{'users.award.field.reason.placeholder' | translate}}"
 | 
				
			||||||
    <show-error displayName="Begründung" controlPath="reason"></show-error>
 | 
					              rows="3" #awardTextArea>
 | 
				
			||||||
 | 
					    </textarea>
 | 
				
			||||||
 | 
					    <show-error displayName="{{'users.award.field.reason' | translate}}" controlPath="reason"></show-error>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
  <button id="cancel"
 | 
					  <button id="cancel"
 | 
				
			||||||
          (click)="cancel()"
 | 
					          (click)="cancel()"
 | 
				
			||||||
          class="btn btn-default">
 | 
					          class="btn btn-default">
 | 
				
			||||||
    Abbrechen
 | 
					    {{'users.award.button.cancel' | translate}}
 | 
				
			||||||
  </button>
 | 
					  </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <button id="save"
 | 
					  <button id="save"
 | 
				
			||||||
          (click)="addAwarding(decorationField, awardTextArea, decoPreview, decoDescription)"
 | 
					          (click)="addAwarding(decorationField, awardTextArea, decoPreview, decoDescription)"
 | 
				
			||||||
          class="btn btn-default"
 | 
					          class="btn btn-default"
 | 
				
			||||||
          [disabled]="decorationField.value === '0' || !form.valid">
 | 
					          [disabled]="decorationField.value === '0' || !form.valid">
 | 
				
			||||||
    Bestätigen
 | 
					    {{'users.award.button.submit' | translate}}
 | 
				
			||||||
  </button>
 | 
					  </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="table-container">
 | 
					  <div class="table-container">
 | 
				
			||||||
    <table class="table table-hover">
 | 
					    <table class="table table-hover">
 | 
				
			||||||
      <thead>
 | 
					      <thead>
 | 
				
			||||||
      <tr>
 | 
					      <tr>
 | 
				
			||||||
        <th class="col-sm-1">Bild</th>
 | 
					        <th class="col-sm-1">{{'users.award.table.head.image' | translate}}</th>
 | 
				
			||||||
        <th class="col-sm-2">Bezeichnung</th>
 | 
					        <th class="col-sm-2">{{'users.award.table.head.name' | translate}}</th>
 | 
				
			||||||
        <th class="col-sm-2">Begründung</th>
 | 
					        <th class="col-sm-2">{{'users.award.table.head.reason' | translate}}</th>
 | 
				
			||||||
        <th class="col-sm-1 text-right">Datum</th>
 | 
					        <th class="col-sm-1 text-right">{{'users.award.table.head.date' | translate}}</th>
 | 
				
			||||||
        <th class="col-sm-1 text-center">Status</th>
 | 
					        <th class="col-sm-1 text-center">{{'users.award.table.head.status' | translate}}</th>
 | 
				
			||||||
        <th class="col-sm-1 text-center">
 | 
					        <th class="col-sm-1 text-center">
 | 
				
			||||||
          <span class="btn btn-default" (click)="deleteAwarding()">Löschen</span>
 | 
					          <span class="btn btn-default" (click)="deleteAwarding()">
 | 
				
			||||||
 | 
					            {{'users.award.table.button.delete' | translate}}
 | 
				
			||||||
 | 
					          </span>
 | 
				
			||||||
        </th>
 | 
					        </th>
 | 
				
			||||||
      </tr>
 | 
					      </tr>
 | 
				
			||||||
      </thead>
 | 
					      </thead>
 | 
				
			||||||
| 
						 | 
					@ -90,7 +92,9 @@
 | 
				
			||||||
          <a class="small text-nowrap">{{award.date | date: 'dd.MM.yyyy'}}</a>
 | 
					          <a class="small text-nowrap">{{award.date | date: 'dd.MM.yyyy'}}</a>
 | 
				
			||||||
        </td>
 | 
					        </td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
          {{award.confirmed === 0 ? 'In Bearbeitung' : (award.confirmed === 1 ? 'Genehmigt' : 'Abgelehnt')}}
 | 
					          {{award.confirmed === 0 ?
 | 
				
			||||||
 | 
					          awardStatus['users.award.table.status.in.progress'] : (award.confirmed === 1 ?
 | 
				
			||||||
 | 
					          awardStatus['users.award.table.status.approved']: awardStatus['users.award.table.status.rejected'])}}
 | 
				
			||||||
        </td>
 | 
					        </td>
 | 
				
			||||||
        <td class="text-center">
 | 
					        <td class="text-center">
 | 
				
			||||||
          <label>
 | 
					          <label>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@ import {DecorationService} from '../../services/army-management/decoration.servi
 | 
				
			||||||
import {Fraction} from '../../utils/fraction.enum';
 | 
					import {Fraction} from '../../utils/fraction.enum';
 | 
				
			||||||
import {SnackBarService} from '../../services/user-interface/snack-bar/snack-bar.service';
 | 
					import {SnackBarService} from '../../services/user-interface/snack-bar/snack-bar.service';
 | 
				
			||||||
import {Message} from '../../i18n/de.messages';
 | 
					import {Message} from '../../i18n/de.messages';
 | 
				
			||||||
 | 
					import {TranslateService} from '@ngx-translate/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
| 
						 | 
					@ -23,6 +24,8 @@ export class AwardUserComponent implements OnInit {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  awards: Award[];
 | 
					  awards: Award[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  awardStatus = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  decoPreviewDisplay = 'none';
 | 
					  decoPreviewDisplay = 'none';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  readonly fraction = Fraction;
 | 
					  readonly fraction = Fraction;
 | 
				
			||||||
| 
						 | 
					@ -31,10 +34,18 @@ export class AwardUserComponent implements OnInit {
 | 
				
			||||||
              private route: ActivatedRoute,
 | 
					              private route: ActivatedRoute,
 | 
				
			||||||
              private awardingService: AwardingService,
 | 
					              private awardingService: AwardingService,
 | 
				
			||||||
              private decorationService: DecorationService,
 | 
					              private decorationService: DecorationService,
 | 
				
			||||||
              private snackBarService: SnackBarService) {
 | 
					              private snackBarService: SnackBarService,
 | 
				
			||||||
 | 
					              private translate: TranslateService) {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ngOnInit() {
 | 
					  ngOnInit() {
 | 
				
			||||||
 | 
					    ['users.award.table.status.in.progress',
 | 
				
			||||||
 | 
					      'users.award.table.status.approved',
 | 
				
			||||||
 | 
					      'users.award.table.status.rejected'].forEach((i18n) => {
 | 
				
			||||||
 | 
					      this.translate.get(i18n).subscribe((translated) => {
 | 
				
			||||||
 | 
					        this.awardStatus[i18n] = translated;
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.decorationService.findDecorations().subscribe(decorations => {
 | 
					    this.decorationService.findDecorations().subscribe(decorations => {
 | 
				
			||||||
      this.decorations = decorations;
 | 
					      this.decorations = decorations;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,38 +1,36 @@
 | 
				
			||||||
<form #form="ngForm" (keydown.enter)="$event.preventDefault()" class="overview">
 | 
					<form #form="ngForm" (keydown.enter)="$event.preventDefault()" class="overview">
 | 
				
			||||||
  <h3 *ngIf="user._id">Teilnehmer editieren</h3>
 | 
					  <h3 *ngIf="user._id">{{'user.submit.headline.edit' | translate}}</h3>
 | 
				
			||||||
  <h3 *ngIf="!user._id">Neuen Teilnehmer hinzufügen</h3>
 | 
					  <h3 *ngIf="!user._id">{{'user.submit.headline.new' | translate}}</h3>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="form-group">
 | 
					  <div class="form-group">
 | 
				
			||||||
    <label for="title">Name</label>
 | 
					    <label for="title">{{'user.submit.field.name' | translate}}</label>
 | 
				
			||||||
    <input class="form-control"
 | 
					    <input class="form-control"
 | 
				
			||||||
           [(ngModel)]="user.username"
 | 
					           [(ngModel)]="user.username"
 | 
				
			||||||
           name="title"
 | 
					           name="title"
 | 
				
			||||||
           id="title"
 | 
					           id="title"
 | 
				
			||||||
           required
 | 
					           required
 | 
				
			||||||
           maxlength="50"/>
 | 
					           maxlength="50"/>
 | 
				
			||||||
 | 
					    <show-error displayName="{{'user.submit.field.name' | translate}}" controlPath="title"></show-error>
 | 
				
			||||||
    <show-error displayName="Name" controlPath="title"></show-error>
 | 
					 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="form-group">
 | 
					  <div class="form-group">
 | 
				
			||||||
    <label for="squad">Squad</label>
 | 
					    <label for="squad">{{'user.submit.field.squad' | translate}}</label>
 | 
				
			||||||
    <select class="form-control"
 | 
					    <select class="form-control"
 | 
				
			||||||
            name="squad"
 | 
					            name="squad"
 | 
				
			||||||
            id="squad"
 | 
					            id="squad"
 | 
				
			||||||
            [(ngModel)]="user.squadId"
 | 
					            [(ngModel)]="user.squadId"
 | 
				
			||||||
            [compareWith]="equals"
 | 
					            [compareWith]="equals"
 | 
				
			||||||
            (change)="toggleRanks()">
 | 
					            (change)="toggleRanks()">
 | 
				
			||||||
      <option [value]="0">Ohne Fraktion/ Squad</option>
 | 
					      <option [value]="0">{{'user.submit.field.squad.not.assigned' | translate}}</option>
 | 
				
			||||||
      <option *ngFor="let squad of squads" [ngValue]="squad">
 | 
					      <option *ngFor="let squad of squads" [ngValue]="squad">
 | 
				
			||||||
        {{squad.fraction == 'BLUFOR'? fraction.BLUFOR : fraction.OPFOR}}: {{squad.name}}
 | 
					        {{squad.fraction == 'BLUFOR'? fraction.BLUFOR : fraction.OPFOR}}: {{squad.name}}
 | 
				
			||||||
      </option>
 | 
					      </option>
 | 
				
			||||||
    </select>
 | 
					    </select>
 | 
				
			||||||
 | 
					    <show-error displayName="{{'user.submit.field.squad' | translate}}" controlPath="squad"></show-error>
 | 
				
			||||||
    <show-error displayName="Squad" controlPath="squad"></show-error>
 | 
					 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <div class="form-group" [style.display]="ranksDisplay">
 | 
					  <div class="form-group" [style.display]="ranksDisplay">
 | 
				
			||||||
    <label for="rank">Rang</label>
 | 
					    <label for="rank">{{'user.submit.field.rank' | translate}}</label>
 | 
				
			||||||
    <select class="form-control"
 | 
					    <select class="form-control"
 | 
				
			||||||
            name="rank"
 | 
					            name="rank"
 | 
				
			||||||
            id="rank" [ngModel]="user.rankLvl"
 | 
					            id="rank" [ngModel]="user.rankLvl"
 | 
				
			||||||
| 
						 | 
					@ -40,14 +38,13 @@
 | 
				
			||||||
            style="min-width: 200px;">
 | 
					            style="min-width: 200px;">
 | 
				
			||||||
      <option *ngFor="let rank of ranks" [value]="rank.level">{{rank.name}}</option>
 | 
					      <option *ngFor="let rank of ranks" [value]="rank.level">{{rank.name}}</option>
 | 
				
			||||||
    </select>
 | 
					    </select>
 | 
				
			||||||
 | 
					    <show-error displayName="{{'user.submit.field.rank' | translate}}" controlPath="rank"></show-error>
 | 
				
			||||||
    <show-error displayName="Rang" controlPath="rank"></show-error>
 | 
					 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <button id="cancel"
 | 
					  <button id="cancel"
 | 
				
			||||||
          (click)="cancel()"
 | 
					          (click)="cancel()"
 | 
				
			||||||
          class="btn btn-default">
 | 
					          class="btn btn-default">
 | 
				
			||||||
    Abbrechen
 | 
					    {{'user.submit.button.cancel' | translate}}
 | 
				
			||||||
  </button>
 | 
					  </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <button id="save"
 | 
					  <button id="save"
 | 
				
			||||||
| 
						 | 
					@ -55,6 +52,6 @@
 | 
				
			||||||
          (click)="saveUser(rankLevel.value)"
 | 
					          (click)="saveUser(rankLevel.value)"
 | 
				
			||||||
          class="btn btn-default"
 | 
					          class="btn btn-default"
 | 
				
			||||||
          [disabled]="!form.valid">
 | 
					          [disabled]="!form.valid">
 | 
				
			||||||
    Bestätigen
 | 
					    {{'user.submit.button.submit' | translate}}
 | 
				
			||||||
  </button>
 | 
					  </button>
 | 
				
			||||||
</form>
 | 
					</form>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,12 +9,14 @@
 | 
				
			||||||
      <small *ngIf="user.squadId && user.squadId.fraction == 'OPFOR'">{{fraction.OPFOR}} - {{user.squadId.name}}</small>
 | 
					      <small *ngIf="user.squadId && user.squadId.fraction == 'OPFOR'">{{fraction.OPFOR}} - {{user.squadId.name}}</small>
 | 
				
			||||||
      <small *ngIf="user.squadId && user.squadId.fraction == 'BLUFOR'">{{fraction.BLUFOR}} - {{user.squadId.name}}
 | 
					      <small *ngIf="user.squadId && user.squadId.fraction == 'BLUFOR'">{{fraction.BLUFOR}} - {{user.squadId.name}}
 | 
				
			||||||
      </small>
 | 
					      </small>
 | 
				
			||||||
      <small *ngIf="!user.squadId">ohne Squad/Fraktion</small>
 | 
					      <small *ngIf="!user.squadId">{{'users.list.item.label.no.squad' | translate}}</small>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="col-sm-4">
 | 
					    <div class="col-sm-4">
 | 
				
			||||||
      <mat-icon (click)="delete(); $event.stopPropagation()" matTooltip="Löschen" class="pull-right" style="margin-top: 8px;" svgIcon="delete"></mat-icon>
 | 
					      <mat-icon (click)="delete(); $event.stopPropagation()" matTooltip="{{'users.list.tooltip.delete' | translate}}"
 | 
				
			||||||
      <mat-icon (click)="award(); $event.stopPropagation()" matTooltip="Auszeichnungen" class="icon-award pull-right" svgIcon="award"></mat-icon>
 | 
					                class="pull-right" style="margin-top: 8px;" svgIcon="delete"></mat-icon>
 | 
				
			||||||
 | 
					      <mat-icon (click)="award(); $event.stopPropagation()" matTooltip="{{'users.list.tooltip.awards' | translate}}"
 | 
				
			||||||
 | 
					                class="icon-award pull-right" svgIcon="award"></mat-icon>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,8 @@
 | 
				
			||||||
  <cc-list-filter
 | 
					  <cc-list-filter
 | 
				
			||||||
    [filterButtons]="[{label: fraction.BLUFOR, value: 'BLUFOR'},
 | 
					    [filterButtons]="[{label: fraction.BLUFOR, value: 'BLUFOR'},
 | 
				
			||||||
                      {label: fraction.OPFOR, value: 'OPFOR'},
 | 
					                      {label: fraction.OPFOR, value: 'OPFOR'},
 | 
				
			||||||
                      {label: 'Ohne Squad', value: 'UNASSIGNED'}]"
 | 
					                      {label: 'users.list.filter.no.squad', value: 'UNASSIGNED'}]"
 | 
				
			||||||
    [addButton]="{svgIcon: 'add-user', tooltip: 'Neuen Teilnehmer hinzufügen'}"
 | 
					    [addButton]="{svgIcon: 'add-user', tooltip: 'users.list.tooltip.new'}"
 | 
				
			||||||
    (executeSearch)="filterUsers(undefined, $event)"
 | 
					    (executeSearch)="filterUsers(undefined, $event)"
 | 
				
			||||||
    (openAddFrom)="openNewUserForm()">
 | 
					    (openAddFrom)="openNewUserForm()">
 | 
				
			||||||
  </cc-list-filter>
 | 
					  </cc-list-filter>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					<router-outlet></router-outlet>
 | 
				
			||||||
| 
						 | 
					@ -2,11 +2,11 @@ import {Component} from '@angular/core';
 | 
				
			||||||
import {TranslateService} from '@ngx-translate/core';
 | 
					import {TranslateService} from '@ngx-translate/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'cc-squad-root',
 | 
					  selector: 'cc-users-root',
 | 
				
			||||||
  templateUrl: './squad.component.html',
 | 
					  templateUrl: './users.component.html',
 | 
				
			||||||
  styleUrls: ['./squad.component.scss']
 | 
					  styleUrls: ['./users.component.scss']
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export class SquadComponent {
 | 
					export class UsersComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(private translate: TranslateService) {
 | 
					  constructor(private translate: TranslateService) {
 | 
				
			||||||
    this.translate.setDefaultLang('de');
 | 
					    this.translate.setDefaultLang('de');
 | 
				
			||||||
| 
						 | 
					@ -3,10 +3,32 @@ import {usersRouterModule, usersRoutingComponents} from './users.routing';
 | 
				
			||||||
import {CommonModule} from '@angular/common';
 | 
					import {CommonModule} from '@angular/common';
 | 
				
			||||||
import {SharedModule} from '../shared.module';
 | 
					import {SharedModule} from '../shared.module';
 | 
				
			||||||
import {InfiniteScrollModule} from 'ngx-infinite-scroll';
 | 
					import {InfiniteScrollModule} from 'ngx-infinite-scroll';
 | 
				
			||||||
 | 
					import {HttpClient} from '@angular/common/http';
 | 
				
			||||||
 | 
					import {TranslateHttpLoader} from '@ngx-translate/http-loader';
 | 
				
			||||||
 | 
					import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function createTranslateLoader(http: HttpClient) {
 | 
				
			||||||
 | 
					  return new TranslateHttpLoader(http, './assets/i18n/users/', '.json');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
  declarations: usersRoutingComponents,
 | 
					  declarations: usersRoutingComponents,
 | 
				
			||||||
  imports: [CommonModule, SharedModule, InfiniteScrollModule, usersRouterModule],
 | 
					
 | 
				
			||||||
 | 
					  imports: [
 | 
				
			||||||
 | 
					    CommonModule,
 | 
				
			||||||
 | 
					    SharedModule,
 | 
				
			||||||
 | 
					    InfiniteScrollModule,
 | 
				
			||||||
 | 
					    usersRouterModule,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TranslateModule.forChild({
 | 
				
			||||||
 | 
					      loader: {
 | 
				
			||||||
 | 
					        provide: TranslateLoader,
 | 
				
			||||||
 | 
					        useFactory: (createTranslateLoader),
 | 
				
			||||||
 | 
					        deps: [HttpClient]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      isolate: true
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export class UsersModule {
 | 
					export class UsersModule {
 | 
				
			||||||
  static routes = usersRouterModule;
 | 
					  static routes = usersRouterModule;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,8 +4,13 @@ import {UserListComponent} from './user-list/user-list.component';
 | 
				
			||||||
import {AwardUserComponent} from './award-user/award-user.component';
 | 
					import {AwardUserComponent} from './award-user/award-user.component';
 | 
				
			||||||
import {ModuleWithProviders} from '@angular/core';
 | 
					import {ModuleWithProviders} from '@angular/core';
 | 
				
			||||||
import {UserItemComponent} from './user-list/user-item.component';
 | 
					import {UserItemComponent} from './user-list/user-item.component';
 | 
				
			||||||
 | 
					import {UsersComponent} from './users.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const usersRoutes: Routes = [
 | 
					export const usersRoutes: Routes = [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    path: '',
 | 
				
			||||||
 | 
					    component: UsersComponent,
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    path: '',
 | 
					    path: '',
 | 
				
			||||||
    component: UserListComponent,
 | 
					    component: UserListComponent,
 | 
				
			||||||
| 
						 | 
					@ -30,4 +35,5 @@ export const usersRoutes: Routes = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const usersRouterModule: ModuleWithProviders = RouterModule.forChild(usersRoutes);
 | 
					export const usersRouterModule: ModuleWithProviders = RouterModule.forChild(usersRoutes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const usersRoutingComponents = [UserItemComponent, UserListComponent, EditUserComponent, AwardUserComponent];
 | 
					export const usersRoutingComponents = [UsersComponent, UserItemComponent, UserListComponent, EditUserComponent,
 | 
				
			||||||
 | 
					  AwardUserComponent];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "public.error.headline": "Oops, diese Seite kennen wir nicht...",
 | 
				
			||||||
 | 
					  "public.error.message.required": "{{fieldName}} ist ein Pflichtfeld",
 | 
				
			||||||
 | 
					  "public.error.message.min.length": "{{fieldName}} muss mindestens {{boundary}} Zeichen enthalten",
 | 
				
			||||||
 | 
					  "public.error.message.max.length": "{{fieldName}} darf maximal {{boundary}} Zeichen enthalten",
 | 
				
			||||||
 | 
					  "public.error.message.email": "Bitte geben Sie eine gültige E-Mail Adresse an",
 | 
				
			||||||
 | 
					  "public.error.message.no.user": "Der eingetragene Benutzer existiert nicht.",
 | 
				
			||||||
 | 
					  "public.error.message.default": "{{fieldName}} ist nicht valide",
 | 
				
			||||||
 | 
					  "public.common.search.button": "Suchen",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "users.list.tooltip.new": "Neuen Teilnehmer hinzufügen",
 | 
				
			||||||
 | 
					  "users.list.tooltip.delete": "Löschen",
 | 
				
			||||||
 | 
					  "users.list.tooltip.awards": "Auszeichnungen",
 | 
				
			||||||
 | 
					  "users.list.filter.no.squad": "Ohne Squad",
 | 
				
			||||||
 | 
					  "users.list.item.label.no.squad": "ohne Squad/Fraktion",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "users.award.headline": "Teilnehmer auszeichnen",
 | 
				
			||||||
 | 
					  "users.award.field.decoration": "Auszeichnung",
 | 
				
			||||||
 | 
					  "users.award.field.decoration.placeholder": "Auswählen...",
 | 
				
			||||||
 | 
					  "users.award.field.reason": "Begründung",
 | 
				
			||||||
 | 
					  "users.award.field.reason.placeholder": "Begründung eingeben...",
 | 
				
			||||||
 | 
					  "users.award.button.submit": "Bestätigen",
 | 
				
			||||||
 | 
					  "users.award.button.cancel": "Abbrechen",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "users.award.table.head.image": "Bild",
 | 
				
			||||||
 | 
					  "users.award.table.head.name": "Bezeichnung",
 | 
				
			||||||
 | 
					  "users.award.table.head.reason": "Begründung",
 | 
				
			||||||
 | 
					  "users.award.table.head.date": "Datum",
 | 
				
			||||||
 | 
					  "users.award.table.head.status": "Status",
 | 
				
			||||||
 | 
					  "users.award.table.button.delete": "Löschen",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "users.award.table.status.in.progress": "In Bearbeitung",
 | 
				
			||||||
 | 
					  "users.award.table.status.approved": "Genehmigt",
 | 
				
			||||||
 | 
					  "users.award.table.status.rejected": "Abgelehnt",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  "user.submit.headline.new": "Neuen Teilnehmer hinzufügen",
 | 
				
			||||||
 | 
					  "user.submit.headline.edit": "Teilnehmer bearbeiten",
 | 
				
			||||||
 | 
					  "user.submit.field.name": "Name",
 | 
				
			||||||
 | 
					  "user.submit.field.squad": "Squad",
 | 
				
			||||||
 | 
					  "user.submit.field.squad.not.assigned": "Ohne Fraktion/ Squad",
 | 
				
			||||||
 | 
					  "user.submit.field.rank": "Rang",
 | 
				
			||||||
 | 
					  "user.submit.button.submit": "Bestätigen",
 | 
				
			||||||
 | 
					  "user.submit.button.cancel": "Abbrechen"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue