From 9d6c6e01b30a3f37d9848315298040a476a22438 Mon Sep 17 00:00:00 2001 From: HardiReady Date: Sat, 14 Apr 2018 13:44:50 +0200 Subject: [PATCH] Add model fields and correct enum usage for vehicle class --- api/models/logs/vehicle.js | 5 +++++ api/models/player.js | 14 +++++++++++++- api/tools/log-parse-tool.js | 22 +++++++++++++++++----- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/api/models/logs/vehicle.js b/api/models/logs/vehicle.js index 8e9920e..748b699 100644 --- a/api/models/logs/vehicle.js +++ b/api/models/logs/vehicle.js @@ -25,6 +25,11 @@ const LogVehicleKillSchema = new Schema({ enum: ['BLUFOR', 'OPFOR', 'NONE'], required: true, }, + vehicleClass: { + type: String, + enum: ['LIGHT', 'HEAVY', 'AIR', "UNKNOWN"], + required: true, + }, }, { collection: 'logVehicle', }); diff --git a/api/models/player.js b/api/models/player.js index a91edf1..a407a8a 100644 --- a/api/models/player.js +++ b/api/models/player.js @@ -24,7 +24,19 @@ const PlayerSchema = new Schema({ set: (v) => Math.round(v), required: true, }, - vehicle: { + vehicleLight: { + type: Number, + get: (v) => Math.round(v), + set: (v) => Math.round(v), + required: true, + }, + vehicleHeavy: { + type: Number, + get: (v) => Math.round(v), + set: (v) => Math.round(v), + required: true, + }, + vehicleAir: { type: Number, get: (v) => Math.round(v), set: (v) => Math.round(v), diff --git a/api/tools/log-parse-tool.js b/api/tools/log-parse-tool.js index 3ea322d..4d787af 100644 --- a/api/tools/log-parse-tool.js +++ b/api/tools/log-parse-tool.js @@ -6,7 +6,7 @@ const WHITESPACE = ' '; const VehicleClasses = Object.freeze({ LIGHT: "Leicht", - HEAVY: "Leicht", + HEAVY: "Schwer", AIR: "Flug", UNKNOWN: "Unbekannt" }); @@ -74,6 +74,7 @@ const parseWarLog = (lineArray, war) => { shooter: shooter ? shooter.name : null, target: target ? target.name : null, fraction: shooter ? shooter.fraction : 'NONE', + vehicleClass: target.vehicleClass, }); } } else { @@ -262,18 +263,29 @@ const getVehicleAndFractionFromString = (nameClassFractionString) => { const vehicleFraction = nameArray[nameArray.length - 1]; nameArray.pop(); - const vehicleClass = nameArray[nameArray.length - 1].replace('(', '').replace(')', ''); + const veheicleClassString = nameArray[nameArray.length - 1].replace('(', '').replace(')', ''); nameArray.pop(); const vehicleName = nameArray.join(WHITESPACE); - // nno counting here - is some basic fraction equipment identifier (i.e. parachute) - if (vehicleFraction === 'OPF_F' || vehicleFraction === 'BLU_F' || vehicleClass === VehicleClasses.UNKNOWN) { + // skip logging here - this is some basic equipment identifier (i.e. parachute) + if (vehicleFraction === 'OPF_F' || vehicleFraction === 'BLU_F' || veheicleClassString === VehicleClasses.UNKNOWN) { return; } const fraction = vehicleFraction === '(OPT_NATO)' || vehicleFraction === '(OPT_NATO_T)' ? 'BLUFOR' : 'OPFOR'; - return {name: vehicleName, fraction: fraction, class: vehicleClass}; + let vehicleClass; + for (const key in VehicleClasses) { + if (VehicleClasses.hasOwnProperty(key) && VehicleClasses[key] === veheicleClassString) { + vehicleClass = key; + } + } + + return { + name: vehicleName, + fraction: fraction, + vehicleClass: vehicleClass, + }; }; const transformMoneyString = (budgetString) => {