Fixed sorting algo

ref #190
This commit is contained in:
Nicolai Ort 2021-04-06 08:56:34 +02:00
parent 4471e57438
commit 988f17a795

View File

@ -65,23 +65,22 @@ export class StatsController {
@OpenAPI({ description: "Returns the top ten runners by fastest laptime on your selected track (track by id).", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) @OpenAPI({ description: "Returns the top ten runners by fastest laptime on your selected track (track by id).", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] })
async getTopRunnersByLaptime(@QueryParam("track") track: number) { async getTopRunnersByLaptime(@QueryParam("track") track: number) {
let scans = await getConnection().getRepository(TrackScan).find({ relations: ['runner', 'runner.group', 'track'] }); let scans = await getConnection().getRepository(TrackScan).find({ relations: ['runner', 'runner.group', 'track'] });
scans = scans.filter((s) => { s.track.id == track && s.valid == true }) scans = scans.filter((s) => { return s.track.id == track && s.valid == true && s.lapTime != 0 }).sort((scan1, scan2) => scan1.lapTime - scan2.lapTime);
console.log(scans)
let topScans = new Array<TrackScan>(); let topScans = new Array<TrackScan>();
let knownRunners = new Array<Runner>(); let knownRunners = new Array<number>();
for (let i = 0; i < scans.length && topScans.length < 10; i++) { for (let i = 0; i < scans.length && topScans.length < 10; i++) {
const element = scans[i]; const element = scans[i];
if (!knownRunners.includes(element.runner)) { if (!knownRunners.includes(element.runner.id)) {
topScans.push(element); topScans.push(element);
knownRunners.push(element.runner); knownRunners.push(element.runner.id);
} }
} }
let responseRunners: ResponseStatsRunner[] = new Array<ResponseStatsRunner>(); // let responseRunners: ResponseStatsRunner[] = new Array<ResponseStatsRunner>();
topScans.forEach(scan => { // topScans.forEach(scan => {
responseRunners.push(new ResponseStatsRunner(scan.runner, scan.lapTime)); // responseRunners.push(new ResponseStatsRunner(scan.runner, scan.lapTime));
}); // });
return responseRunners; return topScans;
} }
@Get("/scans") @Get("/scans")