Compare commits
No commits in common. "cd77c4b7f238940b83bf412ddb7e4a433f02675d" and "91ebda52b01284830e9e1b40014d102abeb79bb9" have entirely different histories.
cd77c4b7f2
...
91ebda52b0
|
@ -8,7 +8,6 @@ module.exports = {
|
||||||
cmdCreateSig: rootRoute + '/cmd/createSignature',
|
cmdCreateSig: rootRoute + '/cmd/createSignature',
|
||||||
command: rootRoute + '/cmd',
|
command: rootRoute + '/cmd',
|
||||||
decorations: rootRoute + '/decorations',
|
decorations: rootRoute + '/decorations',
|
||||||
logs: rootRoute + '/logs',
|
|
||||||
overview: rootRoute + '/overview',
|
overview: rootRoute + '/overview',
|
||||||
players: rootRoute + '/players',
|
players: rootRoute + '/players',
|
||||||
ranks: rootRoute + '/ranks',
|
ranks: rootRoute + '/ranks',
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogBudgetSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
fraction: {
|
|
||||||
type: String,
|
|
||||||
enum: ['BLUFOR', 'OPFOR'],
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
oldBudget: {
|
|
||||||
type: Number,
|
|
||||||
get: v => Math.round(v),
|
|
||||||
set: v => Math.round(v),
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
newBudget: {
|
|
||||||
type: Number,
|
|
||||||
get: v => Math.round(v),
|
|
||||||
set: v => Math.round(v),
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logBudget'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogBudgetSchema.index({war: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogBudget', LogBudgetSchema);
|
|
|
@ -1,35 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogFlagSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
player: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
flagFraction: {
|
|
||||||
type: String,
|
|
||||||
enum: ['BLUFOR', 'OPFOR'],
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
capture: {
|
|
||||||
type: Boolean,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logFlag'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogFlagSchema.index({war: 1, player: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogFlag', LogFlagSchema);
|
|
|
@ -1,38 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogKillSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
shooter: {
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
target: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
friendlyFire: {
|
|
||||||
type: Boolean,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
fraction: {
|
|
||||||
type: String,
|
|
||||||
enum: ['BLUFOR', 'OPFOR', 'NONE'],
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logKill'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogKillSchema.index({war: 1, shooter: 1, target: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogKill', LogKillSchema);
|
|
|
@ -1,39 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogKillSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
ptBlufor: {
|
|
||||||
type: Number,
|
|
||||||
get: v => Math.round(v),
|
|
||||||
set: v => Math.round(v),
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
ptOpfor: {
|
|
||||||
type: Number,
|
|
||||||
get: v => Math.round(v),
|
|
||||||
set: v => Math.round(v),
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
fraction: {
|
|
||||||
type: String,
|
|
||||||
enum: ['BLUFOR', 'OPFOR', 'NONE'],
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logPoints'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogKillSchema.index({war: 1, shooter: 1, target: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogPoints', LogKillSchema);
|
|
|
@ -1,26 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogRespawnSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
player: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logRespawn'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogRespawnSchema.index({war: 1, player: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogRespawn', LogRespawnSchema);
|
|
|
@ -1,39 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogReviveSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
medic: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
patient: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
stabilized: {
|
|
||||||
type: Boolean,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
fraction: {
|
|
||||||
type: String,
|
|
||||||
enum: ['BLUFOR', 'OPFOR'],
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logRevive'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogReviveSchema.index({war: 1, medic: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogRevive', LogReviveSchema);
|
|
|
@ -1,41 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogTransportSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
time: {
|
|
||||||
type: Date,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
driver: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
passenger: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
distance: {
|
|
||||||
type: Number,
|
|
||||||
get: v => Math.round(v),
|
|
||||||
set: v => Math.round(v),
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
fraction: {
|
|
||||||
type: String,
|
|
||||||
enum: ['BLUFOR', 'OPFOR'],
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
collection: 'logTransport'
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogTransportSchema.index({war: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogTransport', LogTransportSchema);
|
|
|
@ -1,175 +0,0 @@
|
||||||
"use strict";
|
|
||||||
|
|
||||||
// modules
|
|
||||||
const express = require('express');
|
|
||||||
const logger = require('debug')('cc:wars');
|
|
||||||
|
|
||||||
// HTTP status codes by name
|
|
||||||
const codes = require('./http-codes');
|
|
||||||
|
|
||||||
const routerHandling = require('../middleware/router-handling');
|
|
||||||
|
|
||||||
// Mongoose Model using mongoDB
|
|
||||||
const LogBudgetModel = require('../models/logs/budget');
|
|
||||||
const LogRespawnModel = require('../models/logs/respawn');
|
|
||||||
const LogReviveModel = require('../models/logs/revive');
|
|
||||||
const LogKillModel = require('../models/logs/kill');
|
|
||||||
const LogTransportModel = require('../models/logs/transport');
|
|
||||||
const LogFlagModel = require('../models/logs/flag');
|
|
||||||
const LogPointsModel = require('../models/logs/points');
|
|
||||||
|
|
||||||
|
|
||||||
const notFoundError = new Error('No logs found');
|
|
||||||
|
|
||||||
const logsRouter = express.Router();
|
|
||||||
|
|
||||||
// routes **********************
|
|
||||||
logsRouter.route('/:warId/budget')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.fraction) filter['fraction'] = req.query.fraction;
|
|
||||||
LogBudgetModel.find(filter, {}, {sort: {time: 1}}, (err, logBudget) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logBudget || logBudget.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logBudget;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.route('/:warId/respawn')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.player) filter['player'] = req.query.player;
|
|
||||||
LogRespawnModel.find(filter, {}, {sort: {time: 1}}, (err, logRespawn) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logRespawn || logRespawn.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logRespawn;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.route('/:warId/revive')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.medic) filter['medic'] = req.query.medic;
|
|
||||||
if (req.query.patient) filter['patient'] = req.query.patient;
|
|
||||||
if (req.query.stabilized) filter['stabilized'] = true;
|
|
||||||
if (req.query.revive) filter['stabilized'] = false;
|
|
||||||
if (req.query.fraction) filter['fraction'] = req.query.fraction;
|
|
||||||
LogReviveModel.find(filter, {}, {sort: {time: 1}}, (err, logRevive) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logRevive || logRevive.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logRevive;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.route('/:warId/kills')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.shooter) filter['shooter'] = req.query.shooter;
|
|
||||||
if (req.query.target) filter['target'] = req.query.target;
|
|
||||||
if (req.query.friendlyFire) filter['friendlyFire'] = true;
|
|
||||||
if (req.query.noFriendlyFire) filter['friendlyFire'] = false;
|
|
||||||
if (req.query.fraction) filter['fraction'] = req.query.fraction;
|
|
||||||
LogKillModel.find(filter, {}, {sort: {time: 1}}, (err, logKill) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logKill || logKill.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logKill;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.route('/:warId/transport')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.driver) filter['driver'] = req.query.driver;
|
|
||||||
if (req.query.passenger) filter['passenger'] = req.query.passenger;
|
|
||||||
if (req.query.fraction) filter['fraction'] = req.query.fraction;
|
|
||||||
LogTransportModel.find(filter, {}, {sort: {time: 1}}, (err, logTransport) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logTransport || logTransport.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logTransport;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.route('/:warId/flag')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.player) filter['player'] = req.query.player;
|
|
||||||
if (req.query.capture) filter['capture'] = true;
|
|
||||||
if (req.query.defend) filter['capture'] = false;
|
|
||||||
if (req.query.fraction) filter['fraction'] = req.query.fraction;
|
|
||||||
LogFlagModel.find(filter, {}, {sort: {time: 1}}, (err, logFlag) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logFlag || logFlag.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logFlag;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.route('/:warId/points')
|
|
||||||
.get((req, res, next) => {
|
|
||||||
const filter = {war: req.params.warId};
|
|
||||||
if (req.query.fraction) filter['fraction'] = req.query.fraction;
|
|
||||||
LogPointsModel.find(filter, {}, {sort: {time: 1}}, (err, logPoints) => {
|
|
||||||
if (err) return next(err);
|
|
||||||
if (!logPoints || logPoints.length === 0) {
|
|
||||||
const err = notFoundError;
|
|
||||||
err.status = codes.notfound;
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
res.locals.items = logPoints;
|
|
||||||
next();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.all(
|
|
||||||
routerHandling.httpMethodNotAllowed
|
|
||||||
);
|
|
||||||
|
|
||||||
logsRouter.use(routerHandling.emptyResponse);
|
|
||||||
|
|
||||||
module.exports = logsRouter;
|
|
|
@ -23,13 +23,6 @@ const parseWarLog = require('../tools/log-parse-tool');
|
||||||
const CampaignModel = require('../models/campaign');
|
const CampaignModel = require('../models/campaign');
|
||||||
const WarModel = require('../models/war');
|
const WarModel = require('../models/war');
|
||||||
const PlayerModel = require('../models/player');
|
const PlayerModel = require('../models/player');
|
||||||
const LogKillModel = require('../models/logs/kill');
|
|
||||||
const LogRespawnModel = require('../models/logs/respawn');
|
|
||||||
const LogReviveModel = require('../models/logs/revive');
|
|
||||||
const LogTransportModel = require('../models/logs/transport');
|
|
||||||
const LogFlagModel = require('../models/logs/flag');
|
|
||||||
const LogBudgetModel = require('../models/logs/budget');
|
|
||||||
const LogPointsModel = require('../models/logs/points');
|
|
||||||
|
|
||||||
const wars = express.Router();
|
const wars = express.Router();
|
||||||
|
|
||||||
|
@ -74,40 +67,26 @@ wars.route('/')
|
||||||
const warBody = new WarModel(body);
|
const warBody = new WarModel(body);
|
||||||
|
|
||||||
if (req.file) {
|
if (req.file) {
|
||||||
fs.readFile(req.file.buffer, (file, err) => {
|
fs.readFile(req.file.buffer, (file, err) => {
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
const lineArray = file.toString().split("\n");
|
|
||||||
const statsResult = parseWarLog(lineArray, warBody);
|
|
||||||
statsResult.war.save((err, war) => {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
PlayerModel.create(statsResult.players, function (err) {
|
const lineArray = file.toString().split("\n");
|
||||||
|
const statsResult = parseWarLog(lineArray, warBody);
|
||||||
|
statsResult.war.save((err, war) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
LogKillModel.create(statsResult.kills, function (err) {
|
PlayerModel.create(statsResult.players, function (err) {
|
||||||
LogRespawnModel.create(statsResult.respawn, function (err) {
|
if (err) {
|
||||||
LogReviveModel.create(statsResult.revive, function (err) {
|
return next(err);
|
||||||
LogFlagModel.create(statsResult.flag, function (err) {
|
}
|
||||||
LogBudgetModel.create(statsResult.budget, function (err) {
|
res.status(codes.created);
|
||||||
LogTransportModel.create(statsResult.transport, function (err) {
|
res.locals.items = war;
|
||||||
LogPointsModel.create(statsResult.points, function (err) {
|
next();
|
||||||
res.status(codes.created);
|
});
|
||||||
res.locals.items = war;
|
})
|
||||||
next();
|
});
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const err = new Error('no Logfile provided');
|
const err = new Error('no Logfile provided');
|
||||||
|
|
|
@ -35,7 +35,6 @@ const signatureRouter = require('./routes/signatures');
|
||||||
const commandRouter = require('./routes/command');
|
const commandRouter = require('./routes/command');
|
||||||
const campaignRouter = require('./routes/campaigns');
|
const campaignRouter = require('./routes/campaigns');
|
||||||
const warRouter = require('./routes/wars');
|
const warRouter = require('./routes/wars');
|
||||||
const logRouter = require('./routes/logs');
|
|
||||||
|
|
||||||
// Configuration ***********************************
|
// Configuration ***********************************
|
||||||
// mongoose promise setup
|
// mongoose promise setup
|
||||||
|
@ -84,7 +83,6 @@ app.use(urls.awards, awardingRouter);
|
||||||
app.use(urls.wars, warRouter);
|
app.use(urls.wars, warRouter);
|
||||||
app.use(urls.players, playerRouter);
|
app.use(urls.players, playerRouter);
|
||||||
app.use(urls.campaigns,campaignRouter);
|
app.use(urls.campaigns,campaignRouter);
|
||||||
app.use(urls.logs,logRouter);
|
|
||||||
app.use(urls.command, apiAuthenticationMiddleware, checkAdmin, commandRouter);
|
app.use(urls.command, apiAuthenticationMiddleware, checkAdmin, commandRouter);
|
||||||
app.use(urls.account, apiAuthenticationMiddleware, checkAdmin, accountRouter);
|
app.use(urls.account, apiAuthenticationMiddleware, checkAdmin, accountRouter);
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,8 @@ const parseWarLog = (lineArray, war) => {
|
||||||
war: war._id,
|
war: war._id,
|
||||||
time: getDateTime(line.split(' ')[5]),
|
time: getDateTime(line.split(' ')[5]),
|
||||||
shooter: shooter ? shooter.name : null,
|
shooter: shooter ? shooter.name : null,
|
||||||
target: target.name,
|
target: target ? target.name : null,
|
||||||
friendlyFire: shooter ? target.fraction === shooter.fraction : false,
|
friendlyFire: target && shooter ? target.fraction === shooter.fraction : false
|
||||||
fraction: shooter ? shooter.fraction : 'NONE'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
addPlayersIfNotExists([shooter, target]);
|
addPlayersIfNotExists([shooter, target]);
|
||||||
|
@ -95,7 +94,7 @@ const parseWarLog = (lineArray, war) => {
|
||||||
stats.war['ptBlufor'] = parseInt(pt[11]);
|
stats.war['ptBlufor'] = parseInt(pt[11]);
|
||||||
stats.war['ptOpfor'] = parseInt(pt[14].slice(0, -1));
|
stats.war['ptOpfor'] = parseInt(pt[14].slice(0, -1));
|
||||||
} else {
|
} else {
|
||||||
stats.points.push(getPointsEntry(pt, line, war._id))
|
stats.points.push(getPointsEntry(pt, war._id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,8 +125,7 @@ const parseWarLog = (lineArray, war) => {
|
||||||
time: getDateTime(line.split(' ')[5]),
|
time: getDateTime(line.split(' ')[5]),
|
||||||
stabilized: stabilized,
|
stabilized: stabilized,
|
||||||
medic: medic.name,
|
medic: medic.name,
|
||||||
patient: patient.name,
|
patient: patientName
|
||||||
fraction: medic.fraction
|
|
||||||
});
|
});
|
||||||
|
|
||||||
addPlayersIfNotExists([medic, patient]);
|
addPlayersIfNotExists([medic, patient]);
|
||||||
|
@ -149,7 +147,6 @@ const parseWarLog = (lineArray, war) => {
|
||||||
time: getDateTime(line.split(' ')[5]),
|
time: getDateTime(line.split(' ')[5]),
|
||||||
driver: driver.name,
|
driver: driver.name,
|
||||||
passenger: passenger.name,
|
passenger: passenger.name,
|
||||||
fraction: driver.fraction,
|
|
||||||
distance: distance
|
distance: distance
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -181,19 +178,18 @@ const getRespawnEntry = (respawn, playerName, warId) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getPointsEntry = (pt, line, warId) => {
|
const getPointsEntry = (pt, warId) => {
|
||||||
return {
|
return {
|
||||||
war: warId,
|
warId: warId,
|
||||||
time: getDateTime(pt[5]),
|
time: getDateTime(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'
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getBudgetEntry = (budg, warId) => {
|
const getBudgetEntry = (budg, warId) => {
|
||||||
return {
|
return {
|
||||||
war: warId,
|
warId: warId,
|
||||||
time: getDateTime(budg[5]),
|
time: getDateTime(budg[5]),
|
||||||
fraction: budg[9] === 'NATO' ? 'BLUFOR' : 'OPFOR',
|
fraction: budg[9] === 'NATO' ? 'BLUFOR' : 'OPFOR',
|
||||||
oldBudget: transformMoneyString(budg[11]),
|
oldBudget: transformMoneyString(budg[11]),
|
||||||
|
@ -205,7 +201,7 @@ const getPlayerAndFractionFromString = (nameAndFractionString) => {
|
||||||
const nameArray = nameAndFractionString.split(' ');
|
const nameArray = nameAndFractionString.split(' ');
|
||||||
const fraction = nameArray[nameArray.length - 1] !== '(ENEMY)' ? nameArray[nameArray.length - 1] === '(WEST)' ? 'BLUFOR' : 'OPFOR' : undefined;
|
const fraction = nameArray[nameArray.length - 1] !== '(ENEMY)' ? nameArray[nameArray.length - 1] === '(WEST)' ? 'BLUFOR' : 'OPFOR' : undefined;
|
||||||
const name = nameAndFractionString.substring(0, nameAndFractionString.indexOf(nameArray[nameArray.length - 1]) - 1);
|
const name = nameAndFractionString.substring(0, nameAndFractionString.indexOf(nameArray[nameArray.length - 1]) - 1);
|
||||||
// do not return player for 'Selbstverschulden' or 'Error: No unit'
|
// do not return player for 'Selbstverschulden'
|
||||||
if (name && name !== 'Error: No unit') {
|
if (name && name !== 'Error: No unit') {
|
||||||
return {name: name, fraction: fraction};
|
return {name: name, fraction: fraction};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue