commit
98cfc802b6
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
# Operation Pandora Trigger Commandcenter
|
# Operation Pandora Trigger Commandcenter
|
||||||
|
|
||||||
A [MEAN Application](http://mean.io/) created for [operation-pandora.com](https://www.operation-pandora.com) Arma3 Community
|
A [MEAN Stack](http://mean.io/) application created for [https://www.opt4.net](https://www.opt4.net) Arma3 Community
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "opt-cc",
|
"name": "opt-cc",
|
||||||
"version": "1.8.4",
|
"version": "1.8.5",
|
||||||
"author": "Florian Hartwich <hardi@noarch.de>",
|
"author": "Florian Hartwich <hardi@noarch.de>",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -15,24 +15,24 @@
|
||||||
"e2e": "ng e2e --serve=false"
|
"e2e": "ng e2e --serve=false"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^6.0.7",
|
"@angular/animations": "^6.1.10",
|
||||||
"@angular/cdk": "^6.0.7",
|
"@angular/cdk": "^6.1.10",
|
||||||
"@angular/cli": "^6.0.7",
|
"@angular/cli": "^6.1.10",
|
||||||
"@angular/common": "^6.0.7",
|
"@angular/common": "^6.1.10",
|
||||||
"@angular/compiler": "^6.0.7",
|
"@angular/compiler": "^6.1.10",
|
||||||
"@angular/compiler-cli": "^6.0.7",
|
"@angular/compiler-cli": "^6.1.10",
|
||||||
"@angular/core": "^6.0.7",
|
"@angular/core": "^6.1.10",
|
||||||
"@angular/forms": "^6.0.7",
|
"@angular/forms": "^6.1.10",
|
||||||
"@angular/http": "^6.0.7",
|
"@angular/http": "^6.1.10",
|
||||||
"@angular/material": "^6.0.7",
|
"@angular/material": "^6.1.10",
|
||||||
"@angular/platform-browser": "^6.0.7",
|
"@angular/platform-browser": "^6.1.10",
|
||||||
"@angular/platform-browser-dynamic": "^6.0.7",
|
"@angular/platform-browser-dynamic": "^6.1.10",
|
||||||
"@angular/router": "^6.0.7",
|
"@angular/router": "^6.1.10",
|
||||||
"@ngx-translate/core": "^10.0.2",
|
"@ngx-translate/core": "^10.0.2",
|
||||||
"@ngx-translate/http-loader": "^3.0.1",
|
"@ngx-translate/http-loader": "^3.0.1",
|
||||||
"@swimlane/ngx-charts": "^9.0.0",
|
"@swimlane/ngx-charts": "^9.1.1",
|
||||||
"bootstrap": "^3.3.7",
|
"bootstrap": "^3.3.7",
|
||||||
"d3": "^5.7.0",
|
"d3": "^4.10.2",
|
||||||
"file-saver": "^1.3.8",
|
"file-saver": "^1.3.8",
|
||||||
"jquery": "^3.1.0",
|
"jquery": "^3.1.0",
|
||||||
"jquery-ui": "^1.12.0",
|
"jquery-ui": "^1.12.0",
|
||||||
|
|
|
@ -1,65 +1,34 @@
|
||||||
.scoreboard-table {
|
.scoreboard-table {
|
||||||
height: 60vh;
|
width: 1058px;
|
||||||
width: fit-content;
|
margin: auto;
|
||||||
border: 1px solid #dadada;
|
height: 68vh;
|
||||||
overflow-x: auto;
|
overflow-x: hidden;
|
||||||
margin: 56px auto auto;
|
overflow-y: auto;
|
||||||
|
box-shadow: 0 5px 5px -3px rgba(0,0,0,.2), 0 8px 10px 1px rgba(0,0,0,.14), 0 3px 14px 2px rgba(0,0,0,.12);
|
||||||
|
border-bottom: 1px solid #dadada;
|
||||||
}
|
}
|
||||||
|
|
||||||
:host /deep/ table.mat-table > thead {
|
.mat-header-row {
|
||||||
position: absolute;
|
width: 1058px;
|
||||||
width: 977px;
|
position: fixed;
|
||||||
display: inherit;
|
z-index: 100;
|
||||||
margin-left: -1px;
|
|
||||||
margin-top: -57px;
|
|
||||||
border: 1px solid #dadada;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:host /deep/ table.mat-table > tbody {
|
.mat-table > mat-row:first-of-type {
|
||||||
margin-top: 0 !important;
|
padding-top: 56px;
|
||||||
}
|
|
||||||
|
|
||||||
.in-table-btn {
|
|
||||||
position: absolute;
|
|
||||||
margin-top: -5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host /deep/ table.mat-table > tbody {
|
|
||||||
margin-top: 60px;
|
|
||||||
display: block;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-column-name {
|
.mat-column-name {
|
||||||
width: 200px;
|
flex: 0 0 220px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-column-fraction {
|
.mat-column-fraction {
|
||||||
width: 90px;
|
flex: 0 0 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-column-kill, .mat-column-friendlyFire, .mat-column-revive, .mat-column-flagTouch, .mat-column-vehicleLight,
|
.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, .mat-column-interact {
|
.mat-column-vehicleHeavy, .mat-column-vehicleAir, .mat-column-death, .mat-column-respawn, .mat-column-interact {
|
||||||
width: 67px;
|
flex: 0 0 75px;
|
||||||
text-indent: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mat-column-vehicleLight mat-icon.mat-icon {
|
|
||||||
width: 28px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mat-column-vehicleHeavy mat-icon.mat-icon {
|
|
||||||
width: 33px;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mat-column-vehicleAir mat-icon.mat-icon {
|
|
||||||
width: 35px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.mat-cell:last-child, td.mat-footer-cell:last-child, th.mat-header-cell:last-child {
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:host /deep/ .mat-table .mat-icon {
|
:host /deep/ .mat-table .mat-icon {
|
||||||
|
|
|
@ -1,47 +1,45 @@
|
||||||
<div class="fade-in scoreboard-table">
|
<div class="fade-in scoreboard-table">
|
||||||
|
|
||||||
<table mat-table matSort
|
<mat-table matSort
|
||||||
[dataSource]="sortedRows"
|
[dataSource]="sortedRows"
|
||||||
matSortActive="{{tableHead[2].prop}}" matSortDirection="asc" matSortDisableClear
|
matSortActive="{{tableHead[2].prop}}" matSortDirection="asc" matSortDisableClear
|
||||||
(matSortChange)="sortScoreboardData($event)"
|
(matSortChange)="sortScoreboardData($event)"
|
||||||
class="mat-elevation-z8">
|
class="mat-elevation-z8">
|
||||||
|
|
||||||
<ng-container matColumnDef="{{tableHead[0].prop}}">
|
<ng-container matColumnDef="{{tableHead[0].prop}}">
|
||||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="{{tableHead[0].prop}}">{{tableHead[0].head | translate}}</th>
|
<mat-header-cell *matHeaderCellDef mat-sort-header="{{tableHead[0].prop}}">{{tableHead[0].head | translate}}</mat-header-cell>
|
||||||
<td mat-cell *matCellDef="let element"
|
<mat-cell *matCellDef="let element"
|
||||||
[style.color]="element['fraction'] === 'BLUFOR' ? fraction.COLOR_BLUFOR : fraction.COLOR_OPFOR">
|
[style.color]="element['fraction'] === 'BLUFOR' ? fraction.COLOR_BLUFOR : fraction.COLOR_OPFOR">
|
||||||
{{element.name}}
|
{{element.name}}
|
||||||
</td>
|
</mat-cell>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container matColumnDef="{{tableHead[1].prop}}">
|
<ng-container matColumnDef="{{tableHead[1].prop}}">
|
||||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="{{tableHead[1].prop}}">{{tableHead[1].head | translate}}</th>
|
<mat-header-cell *matHeaderCellDef mat-sort-header="{{tableHead[1].prop}}">{{tableHead[1].head | translate}}</mat-header-cell>
|
||||||
<td mat-cell *matCellDef="let element">{{element.fraction === 'BLUFOR' ? fraction.BLUFOR : fraction.OPFOR}}</td>
|
<mat-cell *matCellDef="let element">{{element.fraction === 'BLUFOR' ? fraction.BLUFOR : fraction.OPFOR}}</mat-cell>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngFor="let column of tableHead.slice(2, tableHead.length)" matColumnDef="{{column.prop}}">
|
<ng-container *ngFor="let column of tableHead.slice(2, tableHead.length)" matColumnDef="{{column.prop}}">
|
||||||
<th mat-header-cell *matHeaderCellDef mat-sort-header="{{column.prop}}">
|
<mat-header-cell *matHeaderCellDef mat-sort-header="{{column.prop}}" matTooltip="{{column.head | translate}}">
|
||||||
<mat-icon svgIcon="{{column.prop}}"
|
<mat-icon svgIcon="{{column.prop}}">
|
||||||
matTooltip="{{column.head | translate}}">
|
|
||||||
</mat-icon>
|
</mat-icon>
|
||||||
</th>
|
</mat-header-cell>
|
||||||
<td mat-cell *matCellDef="let element">{{element[column.prop]}}</td>
|
<mat-cell *matCellDef="let element">{{element[column.prop]}}</mat-cell>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container matColumnDef="interact">
|
<ng-container matColumnDef="interact">
|
||||||
<th mat-header-cell *matHeaderCellDef></th>
|
<mat-header-cell *matHeaderCellDef></mat-header-cell>
|
||||||
<td mat-cell *matCellDef="let element">
|
<mat-cell *matCellDef="let element">
|
||||||
<button mat-icon-button
|
<button mat-icon-button
|
||||||
matTooltip="{{ 'stats.scoreboard.button.detail' | translate:{name: element.name} }}"
|
matTooltip="{{ 'stats.scoreboard.button.detail' | translate:{name: element.name} }}"
|
||||||
(click)="selectPlayerDetail(1, isSteamUUID(element['steamUUID']) ?
|
(click)="selectPlayerDetail(1, isSteamUUID(element['steamUUID']) ?
|
||||||
element['steamUUID'] : element['name'])">
|
element['steamUUID'] : element['name'])">
|
||||||
<mat-icon svgIcon="stats-detail">
|
<mat-icon svgIcon="stats-detail"></mat-icon>
|
||||||
</mat-icon>
|
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</mat-cell>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
|
||||||
</table>
|
</mat-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue