Add log time save with decimal
							parent
							
								
									b266d6f972
								
							
						
					
					
						commit
						3ccdbe4da3
					
				| 
						 | 
					@ -10,7 +10,7 @@ const LogBudgetSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  fraction: {
 | 
					  fraction: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ const LogFlagSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  player: {
 | 
					  player: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ const LogKillSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  shooter: {
 | 
					  shooter: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ const LogKillSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  ptBlufor: {
 | 
					  ptBlufor: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ const LogRespawnSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  player: {
 | 
					  player: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ const LogReviveSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  medic: {
 | 
					  medic: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ const LogTransportSchema = new Schema({
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  time: {
 | 
					  time: {
 | 
				
			||||||
    type: Date,
 | 
					    type: Number,
 | 
				
			||||||
    required: true
 | 
					    required: true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  driver: {
 | 
					  driver: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
'use strict';
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const timeStringToDecimal = require('../tools/util').timeStringToDecimal;
 | 
				
			||||||
const arrayContains = require('./util').arrayContains;
 | 
					const arrayContains = require('./util').arrayContains;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const parseWarLog = (lineArray, war) => {
 | 
					const parseWarLog = (lineArray, war) => {
 | 
				
			||||||
| 
						 | 
					@ -46,7 +47,7 @@ const parseWarLog = (lineArray, war) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      stats.kills.push({
 | 
					      stats.kills.push({
 | 
				
			||||||
        war: war._id,
 | 
					        war: war._id,
 | 
				
			||||||
        time: getDateTime(line.split(' ')[5]),
 | 
					        time: timeStringToDecimal(line.split(' ')[5]),
 | 
				
			||||||
        shooter: shooter ? shooter.name : null,
 | 
					        shooter: shooter ? shooter.name : null,
 | 
				
			||||||
        target: target.name,
 | 
					        target: target.name,
 | 
				
			||||||
        friendlyFire: shooter ? target.fraction === shooter.fraction : false,
 | 
					        friendlyFire: shooter ? target.fraction === shooter.fraction : false,
 | 
				
			||||||
| 
						 | 
					@ -85,7 +86,7 @@ const parseWarLog = (lineArray, war) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      stats.flag.push({
 | 
					      stats.flag.push({
 | 
				
			||||||
        war: war._id,
 | 
					        war: war._id,
 | 
				
			||||||
        time: getDateTime(line.split(' ')[5]),
 | 
					        time: timeStringToDecimal(line.split(' ')[5]),
 | 
				
			||||||
        player: playerName,
 | 
					        player: playerName,
 | 
				
			||||||
        flagFraction: flagFraction,
 | 
					        flagFraction: flagFraction,
 | 
				
			||||||
        capture: capture
 | 
					        capture: capture
 | 
				
			||||||
| 
						 | 
					@ -132,7 +133,7 @@ const parseWarLog = (lineArray, war) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      stats.revive.push({
 | 
					      stats.revive.push({
 | 
				
			||||||
        war: war._id,
 | 
					        war: war._id,
 | 
				
			||||||
        time: getDateTime(line.split(' ')[5]),
 | 
					        time: timeStringToDecimal(line.split(' ')[5]),
 | 
				
			||||||
        stabilized: stabilized,
 | 
					        stabilized: stabilized,
 | 
				
			||||||
        medic: medic.name,
 | 
					        medic: medic.name,
 | 
				
			||||||
        patient: patient.name,
 | 
					        patient: patient.name,
 | 
				
			||||||
| 
						 | 
					@ -155,7 +156,7 @@ const parseWarLog = (lineArray, war) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      stats.transport.push({
 | 
					      stats.transport.push({
 | 
				
			||||||
        war: war._id,
 | 
					        war: war._id,
 | 
				
			||||||
        time: getDateTime(line.split(' ')[5]),
 | 
					        time: timeStringToDecimal(line.split(' ')[5]),
 | 
				
			||||||
        driver: driver.name,
 | 
					        driver: driver.name,
 | 
				
			||||||
        passenger: passenger ? passenger.name : null,
 | 
					        passenger: passenger ? passenger.name : null,
 | 
				
			||||||
        fraction: driver.fraction,
 | 
					        fraction: driver.fraction,
 | 
				
			||||||
| 
						 | 
					@ -187,7 +188,7 @@ const parseWarLog = (lineArray, war) => {
 | 
				
			||||||
const getRespawnEntry = (respawn, playerName, warId) => {
 | 
					const getRespawnEntry = (respawn, playerName, warId) => {
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
    war: warId,
 | 
					    war: warId,
 | 
				
			||||||
    time: getDateTime(respawn[5]),
 | 
					    time: timeStringToDecimal(respawn[5]),
 | 
				
			||||||
    player: playerName
 | 
					    player: playerName
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -195,7 +196,7 @@ const getRespawnEntry = (respawn, playerName, warId) => {
 | 
				
			||||||
const getPointsEntry = (pt, line, warId) => {
 | 
					const getPointsEntry = (pt, line, warId) => {
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
    war: warId,
 | 
					    war: warId,
 | 
				
			||||||
    time: getDateTime(pt[5]),
 | 
					    time: timeStringToDecimal(pt[5]),
 | 
				
			||||||
    ptBlufor: parseInt(pt[12]),
 | 
					    ptBlufor: parseInt(pt[12]),
 | 
				
			||||||
    ptOpfor: parseInt(pt[15].slice(0, -1)),
 | 
					    ptOpfor: parseInt(pt[15].slice(0, -1)),
 | 
				
			||||||
    fraction: line.includes('no Domination') ? 'NONE' : line.includes('NATO +1') ? 'BLUFOR' : 'OPFOR'
 | 
					    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) => {
 | 
					const getBudgetEntry = (budg, warId) => {
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
    war: warId,
 | 
					    war: warId,
 | 
				
			||||||
    time: getDateTime(budg[5]),
 | 
					    time: timeStringToDecimal(budg[5]),
 | 
				
			||||||
    fraction: budg[9] === 'NATO' ? 'BLUFOR' : 'OPFOR',
 | 
					    fraction: budg[9] === 'NATO' ? 'BLUFOR' : 'OPFOR',
 | 
				
			||||||
    oldBudget: transformMoneyString(budg[11]),
 | 
					    oldBudget: transformMoneyString(budg[11]),
 | 
				
			||||||
    newBudget: transformMoneyString(budg[14])
 | 
					    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;
 | 
					module.exports = parseWarLog;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ const sortCollectionBy = (collection, key) => {
 | 
				
			||||||
const playerArrayContains = (arr, item) => {
 | 
					const playerArrayContains = (arr, item) => {
 | 
				
			||||||
  let i = 0, count = arr.length, matchFound = false;
 | 
					  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) {
 | 
					    if (arr[i].name === item.name && arr[i].fraction === item.fraction) {
 | 
				
			||||||
      matchFound = true;
 | 
					      matchFound = true;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
| 
						 | 
					@ -24,5 +24,27 @@ const playerArrayContains = (arr, item) => {
 | 
				
			||||||
  return matchFound;
 | 
					  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.sortCollection = sortCollectionBy;
 | 
				
			||||||
exports.arrayContains = playerArrayContains;
 | 
					exports.arrayContains = playerArrayContains;
 | 
				
			||||||
 | 
					exports.timeStringToDecimal = timeStringToDecimal;
 | 
				
			||||||
 | 
					exports.decimalToTimeString = decimalToTimeString;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,8 +33,7 @@ export class WarDetailComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(private route: ActivatedRoute,
 | 
					  constructor(private route: ActivatedRoute,
 | 
				
			||||||
              private router: Router,
 | 
					              private router: Router,
 | 
				
			||||||
              private warService: WarService,
 | 
					              private warService: WarService) {
 | 
				
			||||||
              private logsService: LogsService) {
 | 
					 | 
				
			||||||
    Object.assign(this, this.playerChart)
 | 
					    Object.assign(this, this.playerChart)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue