summaryrefslogtreecommitdiff
path: root/src/report-service.js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2018-05-21 16:28:24 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2018-12-13 16:59:35 +0100
commitb7a276d54ae88fde32cd1fba0ec4bb1ac41cab55 (patch)
tree7d8a71b1da5fb4f6aa217fd88ed87212d05a036b /src/report-service.js
parent365e27048fc9a17137fc3d5488103085384af1b9 (diff)
downloadbrokentalents-b7a276d54ae88fde32cd1fba0ec4bb1ac41cab55.tar.gz
brokentalents-b7a276d54ae88fde32cd1fba0ec4bb1ac41cab55.zip
Support talentless modes
Diffstat (limited to 'src/report-service.js')
-rw-r--r--src/report-service.js17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/report-service.js b/src/report-service.js
index 8b6ed23..7443672 100644
--- a/src/report-service.js
+++ b/src/report-service.js
@@ -1,11 +1,11 @@
import * as maps from './maps/maps';
-const MODES = [ 'casual_aral', 'blitz_pvp_ranked' ];
+const MODES = [ 'casual_aral', 'blitz_pvp_ranked', 'ranked', '5v5_pvp_ranked' ];
const POPULAR_THRESHOLD = 0.1;
export default class ReportService {
constructor() {
- this.report = require('../data/98aae7f0/report.json')
+ this.report = require('../data/95fb1cdb/report.json')
.filter((entry) => entry.Actor != undefined); // bad data from API downtime
this.reports = new Map();
@@ -22,8 +22,9 @@ export default class ReportService {
this.actors = [];
this.modes = MODES;
- for(let mode of MODES) {
+ for(let mode of this.modes) {
const relevancy = (entry) => (entry.Count / this.totalPicks.get(mode)) * entry.Winner;
+ const playersPerMatch = maps.playersPerMatch(mode);
this.reports.set(mode, this.report.filter((entry) => entry.Mode == mode));
this.totalPicks.set(mode, this.report.map((entry) => entry.Count).reduce((agg, cur) => agg + cur, 0));
@@ -32,19 +33,19 @@ export default class ReportService {
.slice(0, 10));
this.topPicks.set(mode, this.reports.get(mode).sort((entry1, entry2) => entry2.Count - entry1.Count)[0]);
this.topWins.set(mode, this.reports.get(mode)
- .filter((entry) => 100 * 6 * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
+ .filter((entry) => 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
.sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
this.topUnpopularWins.set(mode, this.reports.get(mode)
- .filter((entry) => 100 * 6 * entry.Count / this.totalPicks.get(mode) <= POPULAR_THRESHOLD)
+ .filter((entry) => 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode) <= POPULAR_THRESHOLD)
.sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
this.topRareWins.set(mode, this.reports.get(mode)
- .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Rare' && 100 * 6 * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
+ .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Rare' && 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
.sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
this.topEpicWins.set(mode, this.reports.get(mode)
- .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Epic' && 100 * 6 * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
+ .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Epic' && 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
.sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
this.topLegendaryWins.set(mode, this.reports.get(mode)
- .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Legendary' && 100 * 6 * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
+ .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Legendary' && 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode) > POPULAR_THRESHOLD)
.sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
this.topLeveledUp.set(mode, this.reports.get(mode).sort((entry1, entry2) => {
if (!entry1.Level) return 1;