diff --git a/api/package.json b/api/package.json index b0a7cd2..15b224b 100644 --- a/api/package.json +++ b/api/package.json @@ -3,6 +3,7 @@ "licence": "CC BY-SA 4.0", "description": "RESTful API for Operation Pandora Trigger Command Center, includes signature generator", "main": "server.js", + "author": "Florian Hartwich ", "private": true, "scripts": { "start": "NODE_ENV=production node server.js", diff --git a/api/routes/wars.js b/api/routes/wars.js index 8f73f41..7726b68 100644 --- a/api/routes/wars.js +++ b/api/routes/wars.js @@ -150,7 +150,7 @@ wars.route('/:id') err.status = codes.notfound; return next(err); } - PlayerModel.find({warId: item._id}, {}, {sort: {sort: 'desc'}}, (err, items) => { + PlayerModel.find({warId: item._id}, {}, {sort: {kill: 'desc'}}, (err, items) => { if (err) { return next(err); } diff --git a/api/tools/log-parse-tool.js b/api/tools/log-parse-tool.js index ea29c00..a619043 100644 --- a/api/tools/log-parse-tool.js +++ b/api/tools/log-parse-tool.js @@ -1,7 +1,7 @@ 'use strict'; const timeStringToDecimal = require('../tools/util').timeStringToDecimal; -const arrayContains = require('./util').arrayContains; +const playerArrayContains = require('./util').playerArrayContains; const parseWarLog = (lineArray, war) => { const nameToLongError = 'Error: ENAMETOOLONG: name too long, open \''; @@ -20,7 +20,7 @@ const parseWarLog = (lineArray, war) => { const addPlayersIfNotExists = (inputPlayers) => { inputPlayers.forEach(player => { - if (player && player.name && player.fraction && !arrayContains(stats.players, player)) { + if (player && player.name && player.fraction && !playerArrayContains(stats.players, player)) { player['warId'] = war._id; stats.players.push(player); } diff --git a/api/tools/util.js b/api/tools/util.js index 1a56134..e0ebbe7 100644 --- a/api/tools/util.js +++ b/api/tools/util.js @@ -11,11 +11,11 @@ const sortCollectionBy = (collection, key) => { return collection; }; -const arrayContains = (arr, item) => { +const playerArrayContains = (arr, item) => { let i = 0, count = arr.length, matchFound = false; for (; i < count; i++) { - if (arr[i] === item) { + if (arr[i].name === item.name && arr[i].fraction === item.fraction) { matchFound = true; break; } @@ -45,6 +45,6 @@ const decimalToTimeString = (decimal) => { }; exports.sortCollection = sortCollectionBy; -exports.arrayContains = arrayContains; +exports.playerArrayContains = playerArrayContains; exports.timeStringToDecimal = timeStringToDecimal; exports.decimalToTimeString = decimalToTimeString; diff --git a/package.json b/package.json index ec6edde..945d0b2 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "opt-cc", "version": "1.6.0", "license": "MIT", + "author": "Florian Hartwich ", "private": true, "scripts": { "start": "npm run deploy-static-prod && npm start --prefix ./api", diff --git a/static/package.json b/static/package.json index 9e360a3..c1c7093 100644 --- a/static/package.json +++ b/static/package.json @@ -1,6 +1,7 @@ { "name": "opt-cc-static", "license": "MIT", + "author": "Florian Hartwich ", "private": true, "angular-cli": {}, "scripts": { @@ -30,7 +31,6 @@ "jquery": "^3.1.0", "jquery-ui": "^1.12.0", "jquery-ui-bundle": "^1.11.4", - "ngx-bootstrap": "^2.0.0-beta.6", "ngx-clipboard": "^8.1.0", "ngx-cookie-service": "^1.0.9", "ngx-infinite-scroll": "^0.5.2", diff --git a/static/src/app/statistic/campaign-player-detail/campaign-player-detail.component.ts b/static/src/app/statistic/campaign-player-detail/campaign-player-detail.component.ts index 2aa64eb..3b63160 100644 --- a/static/src/app/statistic/campaign-player-detail/campaign-player-detail.component.ts +++ b/static/src/app/statistic/campaign-player-detail/campaign-player-detail.component.ts @@ -91,6 +91,10 @@ export class CampaignPlayerDetailComponent { this.reviveData = this.assignData(this.yAxisRevive, "revive"); this.captureData = this.assignData(this.yAxisCapture, "flagTouch"); + if (this.totalDeath === 0) { + // avoid infinite or NaN with no death + this.totalDeath = 1; + } this.kdRatio = parseFloat((this.totalKills / this.totalDeath).toFixed(2)); if (this.kdRatio > 1) this.maxKd = this.kdRatio * 1.7; diff --git a/static/src/app/statistic/war-detail/war-detail.component.css b/static/src/app/statistic/war-detail/war-detail.component.css index 83ff550..8f1751d 100644 --- a/static/src/app/statistic/war-detail/war-detail.component.css +++ b/static/src/app/statistic/war-detail/war-detail.component.css @@ -4,6 +4,12 @@ width: 4%; } +.head-field { + font-size: 24px; + margin-top: 10px; + margin-bottom: 10px; +} + @media screen and (min-width: 1500px) { .vertical-spacer { width: 15%; diff --git a/static/src/app/statistic/war-detail/war-detail.component.html b/static/src/app/statistic/war-detail/war-detail.component.html index 1632a8d..4443ad9 100644 --- a/static/src/app/statistic/war-detail/war-detail.component.html +++ b/static/src/app/statistic/war-detail/war-detail.component.html @@ -2,19 +2,19 @@
-
+

{{war.title}} - vom {{war.date | date: 'dd.MM.yyyy'}}

-

+

Endpunktestand:

NATO {{war.ptBlufor}} | {{war.ptOpfor}} CSAT -

+
-

-

Teilnehmer:

+
+

Teilnehmer:

- +
-
+
Logfile anzeigen
@@ -52,9 +52,9 @@
- a, span.glyphicon, span.icon-award{ cursor: pointer; }