migrate to basic material table
parent
ed238e311e
commit
9a0cd3544e
|
@ -8,12 +8,13 @@ import {CampaignService} from '../services/logs/campaign.service';
|
||||||
import {NgxDatatableModule} from '@swimlane/ngx-datatable';
|
import {NgxDatatableModule} from '@swimlane/ngx-datatable';
|
||||||
import {PlayerService} from '../services/logs/player.service';
|
import {PlayerService} from '../services/logs/player.service';
|
||||||
import {LogsService} from '../services/logs/logs.service';
|
import {LogsService} from '../services/logs/logs.service';
|
||||||
import {MatButtonModule, MatButtonToggleModule, MatExpansionModule} from '@angular/material';
|
import {MatButtonModule, MatButtonToggleModule, MatExpansionModule, MatTableModule} from '@angular/material';
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: statsRoutingComponents,
|
declarations: statsRoutingComponents,
|
||||||
imports: [CommonModule, SharedModule, statsRouterModule, NgxChartsModule, NgxDatatableModule,
|
imports: [CommonModule, SharedModule, statsRouterModule, NgxChartsModule, NgxDatatableModule,
|
||||||
MatButtonModule, MatExpansionModule, MatButtonToggleModule],
|
MatButtonModule, MatExpansionModule, MatButtonToggleModule, MatTableModule],
|
||||||
providers: [WarService, CampaignService, PlayerService, LogsService]
|
providers: [WarService, CampaignService, PlayerService, LogsService]
|
||||||
})
|
})
|
||||||
export class StatsModule {
|
export class StatsModule {
|
||||||
|
|
|
@ -69,3 +69,21 @@ ngx-datatable {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
margin-top: -5px;
|
margin-top: -5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* MATERIAL TABLE */
|
||||||
|
table.mat-table {
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-column-name {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
.mat-column-fraction {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-column-kill, .mat-column-friendlyFire, .mat-column-revive, .mat-column-flagTouch,
|
||||||
|
.mat-column-vehicleLight, .mat-column-vehicleHeavy, .mat-column-vehicleAir, .mat-column-death, .mat-column-respawn {
|
||||||
|
width: 62px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
|
@ -1,47 +1,73 @@
|
||||||
<div class="fade-in" style="overflow-x: auto" xmlns="http://www.w3.org/1999/html">
|
<div class="fade-in" style="overflow-x: auto">
|
||||||
<ngx-datatable
|
|
||||||
[rows]="rows"
|
|
||||||
[sorts]="[{prop: 'kill', dir: 'desc'}]"
|
|
||||||
[reorderable]="reorderable"
|
|
||||||
[messages]="{emptyMessage: 'Loading...'}"
|
|
||||||
[headerHeight]="cellHeight"
|
|
||||||
[rowHeight]="cellHeight"
|
|
||||||
[cssClasses]='customClasses'
|
|
||||||
[columnMode]="'force'"
|
|
||||||
[scrollbarV]="true"
|
|
||||||
[selectionType]="'single'">
|
|
||||||
<ngx-datatable-column name="{{tableHead[0].head}}" prop="name" [width]="210" style="padding-left:10px">
|
|
||||||
<ng-template ngx-datatable-cell-template let-row="row" let-value="value">
|
|
||||||
<span class="player-name"
|
|
||||||
[style.color]="row['fraction'] === 'BLUFOR' ? fraction.COLOR_BLUFOR : fraction.COLOR_OPFOR">
|
|
||||||
{{value}}
|
|
||||||
</span>
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
<ngx-datatable-column name="{{tableHead[1].head}}" prop="fraction" [width]="90">
|
|
||||||
<ng-template ngx-datatable-cell-template let-value="value">
|
|
||||||
{{value === 'BLUFOR' ? fraction.BLUFOR : fraction.OPFOR}}
|
|
||||||
</ng-template>
|
|
||||||
</ngx-datatable-column>
|
|
||||||
|
|
||||||
<div *ngFor="let column of tableHead.slice(2, tableHead.length) ">
|
<table mat-table [dataSource]="rows" class="mat-elevation-z8">
|
||||||
<ngx-datatable-column [width]="columnWidth" prop="{{column.prop}}">
|
|
||||||
<ng-template ngx-datatable-header-template let-sort="sortFn">
|
<ng-container matColumnDef="{{tableHead[0].prop}}">
|
||||||
<span class="datatable-header-cell-wrapper">
|
<th mat-header-cell *matHeaderCellDef> {{tableHead[0].head}} </th>
|
||||||
<span class="datatable-header-cell-label text-truncate" title="{{column.head}}" (click)="sort()">
|
<td mat-cell *matCellDef="let element"
|
||||||
<img src="../../../../assets/scoreboard/{{column.prop}}.png" alt="{{column.head}}">
|
[style.color]="element['fraction'] === 'BLUFOR' ? fraction.COLOR_BLUFOR : fraction.COLOR_OPFOR">
|
||||||
</span>
|
{{element.name}}
|
||||||
</span>
|
</td>
|
||||||
</ng-template>
|
</ng-container>
|
||||||
</ngx-datatable-column>
|
|
||||||
</div>
|
<ng-container matColumnDef="{{tableHead[1].prop}}">
|
||||||
<ngx-datatable-column [width]="80">
|
<th mat-header-cell *matHeaderCellDef> {{tableHead[1].head}} </th>
|
||||||
<ng-template ngx-datatable-cell-template let-row="row">
|
<td mat-cell *matCellDef="let element"> {{element.fraction}} </td>
|
||||||
<span class="btn btn-sm btn-default in-table-btn"
|
</ng-container>
|
||||||
(click)="selectPlayerDetail(1, isSteamUUID(row['steamUUID']) ? row['steamUUID'] : row['name'])">
|
|
||||||
Gesamt
|
<ng-container *ngFor="let column of tableHead.slice(2, tableHead.length)" matColumnDef="{{column.prop}}">
|
||||||
</span>
|
<th mat-header-cell *matHeaderCellDef> <img src="../../../../assets/scoreboard/{{column.prop}}.png" alt="{{column.head}}"> </th>
|
||||||
</ng-template>
|
<td mat-cell *matCellDef="let element"> {{element[column.prop]}} </td>
|
||||||
</ngx-datatable-column>
|
</ng-container>
|
||||||
</ngx-datatable>
|
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<!--<ngx-datatable-->
|
||||||
|
<!--[rows]="rows"-->
|
||||||
|
<!--[sorts]="[{prop: 'kill', dir: 'desc'}]"-->
|
||||||
|
<!--[reorderable]="reorderable"-->
|
||||||
|
<!--[messages]="{emptyMessage: 'Loading...'}"-->
|
||||||
|
<!--[headerHeight]="cellHeight"-->
|
||||||
|
<!--[rowHeight]="cellHeight"-->
|
||||||
|
<!--[cssClasses]='customClasses'-->
|
||||||
|
<!--[columnMode]="'force'"-->
|
||||||
|
<!--[scrollbarV]="true"-->
|
||||||
|
<!--[selectionType]="'single'">-->
|
||||||
|
<!--<ngx-datatable-column name="{{tableHead[0].head}}" prop="name" [width]="210" style="padding-left:10px">-->
|
||||||
|
<!--<ng-template ngx-datatable-cell-template let-row="row" let-value="value">-->
|
||||||
|
<!--<span class="player-name"-->
|
||||||
|
<!--[style.color]="row['fraction'] === 'BLUFOR' ? fraction.COLOR_BLUFOR : fraction.COLOR_OPFOR">-->
|
||||||
|
<!--{{value}}-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</ng-template>-->
|
||||||
|
<!--</ngx-datatable-column>-->
|
||||||
|
<!--<ngx-datatable-column name="{{tableHead[1].head}}" prop="fraction" [width]="90">-->
|
||||||
|
<!--<ng-template ngx-datatable-cell-template let-value="value">-->
|
||||||
|
<!--{{value === 'BLUFOR' ? fraction.BLUFOR : fraction.OPFOR}}-->
|
||||||
|
<!--</ng-template>-->
|
||||||
|
<!--</ngx-datatable-column>-->
|
||||||
|
|
||||||
|
<!--<div *ngFor="let column of tableHead.slice(2, tableHead.length) ">-->
|
||||||
|
<!--<ngx-datatable-column [width]="columnWidth" prop="{{column.prop}}">-->
|
||||||
|
<!--<ng-template ngx-datatable-header-template let-sort="sortFn">-->
|
||||||
|
<!--<span class="datatable-header-cell-wrapper">-->
|
||||||
|
<!--<span class="datatable-header-cell-label text-truncate" title="{{column.head}}" (click)="sort()">-->
|
||||||
|
<!--<img src="../../../../assets/scoreboard/{{column.prop}}.png" alt="{{column.head}}">-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</ng-template>-->
|
||||||
|
<!--</ngx-datatable-column>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--<ngx-datatable-column [width]="80">-->
|
||||||
|
<!--<ng-template ngx-datatable-cell-template let-row="row">-->
|
||||||
|
<!--<span class="btn btn-sm btn-default in-table-btn"-->
|
||||||
|
<!--(click)="selectPlayerDetail(1, isSteamUUID(row['steamUUID']) ? row['steamUUID'] : row['name'])">-->
|
||||||
|
<!--Gesamt-->
|
||||||
|
<!--</span>-->
|
||||||
|
<!--</ng-template>-->
|
||||||
|
<!--</ngx-datatable-column>-->
|
||||||
|
<!--</ngx-datatable>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -29,6 +29,9 @@ export class ScoreboardComponent implements OnChanges {
|
||||||
|
|
||||||
rows = [];
|
rows = [];
|
||||||
|
|
||||||
|
displayedColumns = //['name', 'fraction', 'kill', 'friendlyFire', 'revive', 'flagTouch', 'vehicleLight', 'vehicleHeavy', 'vehicleAir'];
|
||||||
|
this.tableHead.map(head => head.prop);
|
||||||
|
|
||||||
reorderable = false;
|
reorderable = false;
|
||||||
|
|
||||||
customClasses = {
|
customClasses = {
|
||||||
|
@ -37,6 +40,7 @@ export class ScoreboardComponent implements OnChanges {
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(private elRef: ElementRef) {
|
constructor(private elRef: ElementRef) {
|
||||||
|
console.log(this.displayedColumns)
|
||||||
}
|
}
|
||||||
|
|
||||||
selectPlayerDetail(view: number, player) {
|
selectPlayerDetail(view: number, player) {
|
||||||
|
@ -49,9 +53,9 @@ export class ScoreboardComponent implements OnChanges {
|
||||||
ngOnChanges(changes: SimpleChanges) {
|
ngOnChanges(changes: SimpleChanges) {
|
||||||
if (changes.war) {
|
if (changes.war) {
|
||||||
this.rows = changes.war.currentValue.players;
|
this.rows = changes.war.currentValue.players;
|
||||||
this.elRef.nativeElement
|
// this.elRef.nativeElement
|
||||||
.querySelector('.datatable-body')
|
// .querySelector('.datatable-body')
|
||||||
.scrollTo(0, 0);
|
// .scrollTo(0, 0);
|
||||||
}
|
}
|
||||||
if (changes.fractionFilterSelected) {
|
if (changes.fractionFilterSelected) {
|
||||||
this.filterPlayersByFraction(this.fractionFilterSelected);
|
this.filterPlayersByFraction(this.fractionFilterSelected);
|
||||||
|
|
Loading…
Reference in New Issue