Add log time save with decimal

pull/15/head
HardiReady 2017-10-24 20:21:06 +02:00
parent b266d6f972
commit 3ccdbe4da3
10 changed files with 39 additions and 22 deletions

View File

@ -10,7 +10,7 @@ const LogBudgetSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
fraction: {

View File

@ -10,7 +10,7 @@ const LogFlagSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
player: {

View File

@ -10,7 +10,7 @@ const LogKillSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
shooter: {

View File

@ -10,7 +10,7 @@ const LogKillSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
ptBlufor: {

View File

@ -10,7 +10,7 @@ const LogRespawnSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
player: {

View File

@ -10,7 +10,7 @@ const LogReviveSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
medic: {

View File

@ -10,7 +10,7 @@ const LogTransportSchema = new Schema({
required: true
},
time: {
type: Date,
type: Number,
required: true
},
driver: {

View File

@ -1,5 +1,6 @@
'use strict';
const timeStringToDecimal = require('../tools/util').timeStringToDecimal;
const arrayContains = require('./util').arrayContains;
const parseWarLog = (lineArray, war) => {
@ -46,7 +47,7 @@ const parseWarLog = (lineArray, war) => {
stats.kills.push({
war: war._id,
time: getDateTime(line.split(' ')[5]),
time: timeStringToDecimal(line.split(' ')[5]),
shooter: shooter ? shooter.name : null,
target: target.name,
friendlyFire: shooter ? target.fraction === shooter.fraction : false,
@ -85,7 +86,7 @@ const parseWarLog = (lineArray, war) => {
stats.flag.push({
war: war._id,
time: getDateTime(line.split(' ')[5]),
time: timeStringToDecimal(line.split(' ')[5]),
player: playerName,
flagFraction: flagFraction,
capture: capture
@ -132,7 +133,7 @@ const parseWarLog = (lineArray, war) => {
stats.revive.push({
war: war._id,
time: getDateTime(line.split(' ')[5]),
time: timeStringToDecimal(line.split(' ')[5]),
stabilized: stabilized,
medic: medic.name,
patient: patient.name,
@ -155,7 +156,7 @@ const parseWarLog = (lineArray, war) => {
stats.transport.push({
war: war._id,
time: getDateTime(line.split(' ')[5]),
time: timeStringToDecimal(line.split(' ')[5]),
driver: driver.name,
passenger: passenger ? passenger.name : null,
fraction: driver.fraction,
@ -187,7 +188,7 @@ const parseWarLog = (lineArray, war) => {
const getRespawnEntry = (respawn, playerName, warId) => {
return {
war: warId,
time: getDateTime(respawn[5]),
time: timeStringToDecimal(respawn[5]),
player: playerName
}
};
@ -195,7 +196,7 @@ const getRespawnEntry = (respawn, playerName, warId) => {
const getPointsEntry = (pt, line, warId) => {
return {
war: warId,
time: getDateTime(pt[5]),
time: timeStringToDecimal(pt[5]),
ptBlufor: parseInt(pt[12]),
ptOpfor: parseInt(pt[15].slice(0, -1)),
fraction: line.includes('no Domination') ? 'NONE' : line.includes('NATO +1') ? 'BLUFOR' : 'OPFOR'
@ -205,7 +206,7 @@ const getPointsEntry = (pt, line, warId) => {
const getBudgetEntry = (budg, warId) => {
return {
war: warId,
time: getDateTime(budg[5]),
time: timeStringToDecimal(budg[5]),
fraction: budg[9] === 'NATO' ? 'BLUFOR' : 'OPFOR',
oldBudget: transformMoneyString(budg[11]),
newBudget: transformMoneyString(budg[14])
@ -231,9 +232,4 @@ const transformMoneyString = (budgetString) => {
};
const getDateTime = (timeString) => {
const timeZone = 'Z';
return new Date('1999-01-01T0' + timeString + timeZone);
};
module.exports = parseWarLog;

View File

@ -14,7 +14,7 @@ const sortCollectionBy = (collection, key) => {
const playerArrayContains = (arr, item) => {
let i = 0, count = arr.length, matchFound = false;
for(; i < count; i++) {
for (; i < count; i++) {
if (arr[i].name === item.name && arr[i].fraction === item.fraction) {
matchFound = true;
break;
@ -24,5 +24,27 @@ const playerArrayContains = (arr, item) => {
return matchFound;
};
const timeStringToDecimal = (timeString) => {
const timeArray = timeString.split(':');
const hour = parseInt(timeArray[0]);
const sek = parseInt(timeArray[1]) * 60 + parseInt(timeArray[2]);
return hour + sek * (1 / 3600);
};
const decimalToTimeString = (decimal) => {
const hours = parseInt(decimal.toString().split(".")[0]);
const minutesFloat = ((decimal % 1) * 3600) / 60;
const minutes = parseInt(minutesFloat.toString().split(".")[0]);
const seconds = Math.round((minutesFloat - parseInt(minutes)) * 60);
return (hours < 10 ? '0' + hours : hours) + ':' +
(minutes < 10 ? '0' + minutes : minutes) + ':' +
(seconds < 10 ? '0' + seconds : seconds);
};
exports.sortCollection = sortCollectionBy;
exports.arrayContains = playerArrayContains;
exports.timeStringToDecimal = timeStringToDecimal;
exports.decimalToTimeString = decimalToTimeString;

View File

@ -33,8 +33,7 @@ export class WarDetailComponent {
constructor(private route: ActivatedRoute,
private router: Router,
private warService: WarService,
private logsService: LogsService) {
private warService: WarService) {
Object.assign(this, this.playerChart)
}