diff --git a/frontend/components/ChampionSelector.vue b/frontend/components/ChampionSelector.vue
index cb6ab20..41d5927 100644
--- a/frontend/components/ChampionSelector.vue
+++ b/frontend/components/ChampionSelector.vue
@@ -1,20 +1,68 @@
-
+
+
+
+
![]()
+
+
+
+
diff --git a/frontend/nuxt.config.ts b/frontend/nuxt.config.ts
index 604e3e3..e5ad3d2 100644
--- a/frontend/nuxt.config.ts
+++ b/frontend/nuxt.config.ts
@@ -5,7 +5,7 @@ export default defineNuxtConfig({
css: ['~/assets/css/main.css'],
routeRules: {
- '/' : {prerender: true},
+ '/' : {prerender: false, swr: true},
'/champion/**' : {swr: true}
},
diff --git a/frontend/public/img/lanes/icon-position-bottom-blue.png b/frontend/public/img/lanes/icon-position-bottom-blue.png
new file mode 100644
index 0000000..8dd335c
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-bottom-blue.png differ
diff --git a/frontend/public/img/lanes/icon-position-bottom-hover.png b/frontend/public/img/lanes/icon-position-bottom-hover.png
new file mode 100644
index 0000000..df84013
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-bottom-hover.png differ
diff --git a/frontend/public/img/lanes/icon-position-bottom.png b/frontend/public/img/lanes/icon-position-bottom.png
new file mode 100644
index 0000000..c49002d
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-bottom.png differ
diff --git a/frontend/public/img/lanes/icon-position-jungle-blue.png b/frontend/public/img/lanes/icon-position-jungle-blue.png
new file mode 100644
index 0000000..9f06646
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-jungle-blue.png differ
diff --git a/frontend/public/img/lanes/icon-position-jungle-hover.png b/frontend/public/img/lanes/icon-position-jungle-hover.png
new file mode 100644
index 0000000..fe26ac1
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-jungle-hover.png differ
diff --git a/frontend/public/img/lanes/icon-position-jungle.png b/frontend/public/img/lanes/icon-position-jungle.png
new file mode 100644
index 0000000..88daaf6
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-jungle.png differ
diff --git a/frontend/public/img/lanes/icon-position-middle-blue.png b/frontend/public/img/lanes/icon-position-middle-blue.png
new file mode 100644
index 0000000..cf798de
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-middle-blue.png differ
diff --git a/frontend/public/img/lanes/icon-position-middle-hover.png b/frontend/public/img/lanes/icon-position-middle-hover.png
new file mode 100644
index 0000000..e759396
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-middle-hover.png differ
diff --git a/frontend/public/img/lanes/icon-position-middle.png b/frontend/public/img/lanes/icon-position-middle.png
new file mode 100644
index 0000000..c16810c
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-middle.png differ
diff --git a/frontend/public/img/lanes/icon-position-top-blue.png b/frontend/public/img/lanes/icon-position-top-blue.png
new file mode 100644
index 0000000..e5a0248
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-top-blue.png differ
diff --git a/frontend/public/img/lanes/icon-position-top-hover.png b/frontend/public/img/lanes/icon-position-top-hover.png
new file mode 100644
index 0000000..9c4023b
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-top-hover.png differ
diff --git a/frontend/public/img/lanes/icon-position-top.png b/frontend/public/img/lanes/icon-position-top.png
new file mode 100644
index 0000000..fa923fc
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-top.png differ
diff --git a/frontend/public/img/lanes/icon-position-utility-blue.png b/frontend/public/img/lanes/icon-position-utility-blue.png
new file mode 100644
index 0000000..bc77b76
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-utility-blue.png differ
diff --git a/frontend/public/img/lanes/icon-position-utility-hover.png b/frontend/public/img/lanes/icon-position-utility-hover.png
new file mode 100644
index 0000000..55e725e
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-utility-hover.png differ
diff --git a/frontend/public/img/lanes/icon-position-utility.png b/frontend/public/img/lanes/icon-position-utility.png
new file mode 100644
index 0000000..724f6c8
Binary files /dev/null and b/frontend/public/img/lanes/icon-position-utility.png differ
diff --git a/frontend/server/api/champion/[alias].js b/frontend/server/api/champion/[alias].js
index 686d18b..531d833 100644
--- a/frontend/server/api/champion/[alias].js
+++ b/frontend/server/api/champion/[alias].js
@@ -1,17 +1,5 @@
-import { MongoClient } from 'mongodb'
+import {connectToDatabase, fetchLatestPatch} from '../../utils/mongo'
-async function connectToDatabase() {
- // Create a MongoClient with a MongoClientOptions object to set the Stable API version
- const client = new MongoClient(`mongodb://${process.env.MONGO_USER}:${process.env.MONGO_PASS}@mongo:27017`)
- await client.connect()
- return client
-}
-async function fetchLatestPatch(client) {
- const database = client.db("patches");
- const patches = database.collection("patches");
- const latestPatch = await patches.find().limit(1).sort({date:-1}).next()
- return latestPatch.patch
-}
async function championInfos(client, patch, championAlias) {
const database = client.db("champions");
const collection = database.collection(patch);
diff --git a/frontend/server/api/champions.js b/frontend/server/api/champions.js
new file mode 100644
index 0000000..6f54fa8
--- /dev/null
+++ b/frontend/server/api/champions.js
@@ -0,0 +1,23 @@
+import {connectToDatabase, fetchLatestPatch} from '../utils/mongo'
+
+async function champions(client, patch) {
+ const database = client.db("champions");
+ const collection = database.collection(patch);
+ const data = await collection.find().toArray()
+ data.map((x) => {
+ delete x.runes
+ delete x.builds
+ })
+ return data
+}
+
+export default defineEventHandler(async (event) => {
+ const client = await connectToDatabase();
+ const latestPatch = await fetchLatestPatch(client);
+
+ const data = await champions(client, latestPatch);
+
+ await client.close()
+
+ return data
+})
diff --git a/frontend/server/utils/mongo.js b/frontend/server/utils/mongo.js
new file mode 100644
index 0000000..1d9c9d1
--- /dev/null
+++ b/frontend/server/utils/mongo.js
@@ -0,0 +1,17 @@
+import { MongoClient } from 'mongodb'
+
+async function connectToDatabase() {
+ // Create a MongoClient with a MongoClientOptions object to set the Stable API version
+ const client = new MongoClient(`mongodb://${process.env.MONGO_USER}:${process.env.MONGO_PASS}@mongo:27017`)
+ await client.connect()
+ return client
+}
+
+async function fetchLatestPatch(client) {
+ const database = client.db("patches");
+ const patches = database.collection("patches");
+ const latestPatch = await patches.find().limit(1).sort({date:-1}).next()
+ return latestPatch.patch
+}
+
+export {connectToDatabase, fetchLatestPatch}
diff --git a/match_collector/champion_stat.ts b/match_collector/champion_stat.ts
index 6a49166..b1bad4e 100644
--- a/match_collector/champion_stat.ts
+++ b/match_collector/champion_stat.ts
@@ -141,6 +141,7 @@ async function championInfos(client, patch: number, champion: Champion) {
let winningMatches = 0;
let losingMatches = 0;
let totalMatches = 0;
+ const lanes : Array<{data: string, count: number}> = [];
const runes : Array = [];
const builds : Builds = {tree:treeInit(), start: [], bootsFirst: 0, boots: [], lateGame: []}
for await (let match of allMatches) {
@@ -156,6 +157,12 @@ async function championInfos(client, patch: number, champion: Champion) {
else
losingMatches += 1;
+ // Lanes
+ // TODO: make stats lane-dependant
+ const already = lanes.find((x) => x.data == participant.teamPosition)
+ if(already == undefined) lanes.push({count:1, data: participant.teamPosition})
+ else already.count += 1
+
// Runes
handleParticipantRunes(participant, runes)
@@ -168,6 +175,9 @@ async function championInfos(client, patch: number, champion: Champion) {
let totalChampionMatches = winningMatches + losingMatches;
+ lanes.sort((a, b) => b.count - a.count)
+ arrayRemovePercentage(lanes, totalChampionMatches, 0.15)
+
// Filter runes to keep 3 most played
runes.sort((a, b) => b.count - a.count)
if(runes.length > 3)
@@ -198,6 +208,7 @@ async function championInfos(client, patch: number, champion: Champion) {
return {name: champion.name,
alias: champion.alias.toLowerCase(),
id: championId,
+ lanes: lanes,
winrate: winningMatches / totalChampionMatches,
gameCount: totalChampionMatches,
pickrate: totalChampionMatches/totalMatches,
@@ -236,7 +247,6 @@ async function makeChampionsStats(client, patch : number) {
const database = client.db("champions")
const collection = database.collection(patch)
- await collection.createIndex({id:1})
await collection.createIndex({alias:1})
}