summaryrefslogtreecommitdiff
path: root/src/report-service.js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2018-05-30 20:12:01 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2018-12-13 17:09:09 +0100
commitb09d7a9f73e9b28425326227ce8fc4c3b72fb14d (patch)
tree82a274cac4d8eee2c7e41c0a626a1ce63241946d /src/report-service.js
parent9bca0c543a8a3d5fae1efd0a5d36ef8d1f517d6b (diff)
downloadbrokentalents-b09d7a9f73e9b28425326227ce8fc4c3b72fb14d.tar.gz
brokentalents-b09d7a9f73e9b28425326227ce8fc4c3b72fb14d.zip
Big Routing/Tabbing/ReportService refactor, add ad blocks
Diffstat (limited to 'src/report-service.js')
-rw-r--r--src/report-service.js133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/report-service.js b/src/report-service.js
deleted file mode 100644
index 2469ea9..0000000
--- a/src/report-service.js
+++ /dev/null
@@ -1,133 +0,0 @@
-import * as maps from './maps/maps';
-
-const POPULAR_THRESHOLD = 1.0; // percent
-
-export default class ReportService {
- constructor() {
- this.report = require('../data/95fb1cdb/report.json')
- .filter((entry) => entry.Actor != undefined); // bad data from API downtime
- this.metadata = require('../data/95fb1cdb/metadata.json');
-
- this.reports = new Map();
- this.totalPicks = new Map();
- this.top10Relevancy = new Map();
- this.topPicks = new Map();
- this.topWins = new Map();
- this.topRareWins = new Map();
- this.topEpicWins = new Map();
- this.topLegendaryWins = new Map();
- this.topLeveledUp = new Map();
- this.topLeveledDown = new Map();
- this.topUnpopularWins = new Map();
- this.totalMatches = 0;
- this.actors = [];
- this.modes = this.metadata.config.api.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));
- this.totalMatches += this.totalPicks.get(mode) / maps.playersPerMatch(mode);
- this.top10Relevancy.set(mode, this.reports.get(mode)
- .sort((entry1, entry2) => relevancy(entry2) - relevancy(entry1))
- .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 * 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 * 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 * playersPerMatch * entry.Count / this.totalPicks.get(mode))
- .sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
- this.topEpicWins.set(mode, this.reports.get(mode)
- .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Epic' && 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode))
- .sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
- this.topLegendaryWins.set(mode, this.reports.get(mode)
- .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Legendary' && 100 * playersPerMatch * entry.Count / this.totalPicks.get(mode))
- .sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]);
- this.topLeveledUp.set(mode, this.reports.get(mode).sort((entry1, entry2) => {
- if (!entry1.Level) return 1;
- if (!entry2.Level) return -1;
- return entry1.Level < entry2.Level ? 1 : -1;
- })[0]);
- this.topLeveledDown.set(mode, this.reports.get(mode).sort((entry1, entry2) => {
- if (!entry1.Level) return 1;
- if (!entry2.Level) return -1;
-
- return entry1.Level < entry2.Level ? -1 : 1;
- })[0]);
-
- if (this.actors.length == 0) {
- this.actors = [...new Set(this.reports.get(mode).map((entry) => entry.Actor))];
- }
- }
- }
-
- getReport(mode) {
- return this.reports.get(mode);
- }
-
- getTotalPicks(mode) {
- return this.totalPicks.get(mode);
- }
-
- getTopPick(mode) {
- return this.topPicks.get(mode);
- }
-
- getTop10Picks(mode) {
- return this.top10Relevancy.get(mode);
- }
-
- getHighestLevelAvg(mode) {
- return this.topLeveledUp.get(mode);
- }
-
- getLowestLevelAvg(mode) {
- return this.topLeveledDown.get(mode);
- }
-
- getTopWin(mode) {
- return this.topWins.get(mode);
- }
-
- getTopUnpopularWin(mode) {
- return this.topUnpopularWins.get(mode);
- }
-
- getTopRareWins(mode) {
- return this.topRareWins.get(mode);
- }
-
- getTopEpicWins(mode) {
- return this.topEpicWins.get(mode);
- }
-
- getTopLegendaryWins(mode) {
- return this.topLegendaryWins.get(mode);
- }
-
- getBestUnpopular(mode) {
- return this.topUnpopular.get(mode);
- }
-
- getActors() {
- return this.actors;
- }
-
- getModes() {
- return this.modes;
- }
-
- getTotalMatches() {
- return this.totalMatches;
- }
-
- getLastUpdate() {
- return this.metadata.lastUpdate;
- }
-}