2019-11-08 14:39:56 +00:00
|
|
|
<template>
|
2020-01-01 15:39:54 +00:00
|
|
|
<div v-if="stats.global" class="mt-4 bg-blue-800 rounded-lg">
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="relative flex justify-center py-4 text-blue-200 rounded-t-lg heading">
|
2019-11-10 18:22:20 +00:00
|
|
|
<svg class="w-6 h-6">
|
|
|
|
|
<use xlink:href="#graph" />
|
|
|
|
|
</svg>
|
2020-08-22 13:11:25 +00:00
|
|
|
<span class="mx-4 text-lg font-semibold uppercase">STATS</span>
|
2019-11-10 18:22:20 +00:00
|
|
|
<svg class="w-6 h-6" style="transform: scaleX(-1);">
|
|
|
|
|
<use xlink:href="#graph" />
|
|
|
|
|
</svg>
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="absolute top-0 right-0 mt-3 mr-2">
|
2020-02-13 19:16:13 +00:00
|
|
|
<Tooltip>
|
2021-04-03 15:18:24 +00:00
|
|
|
<template #trigger>
|
2019-11-10 18:22:20 +00:00
|
|
|
<svg class="w-4 h-4 cursor-pointer">
|
|
|
|
|
<use xlink:href="#info" />
|
|
|
|
|
</svg>
|
|
|
|
|
</template>
|
2021-04-03 15:18:24 +00:00
|
|
|
<template #default>
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="px-2 text-sm text-center text-white select-none">
|
2019-11-10 18:22:20 +00:00
|
|
|
<div>Stats based on</div>
|
|
|
|
|
<div>
|
2020-06-11 18:55:39 +00:00
|
|
|
<span class="font-bold text-teal-400">{{ stats.global.count }}</span> matches
|
2019-11-08 14:39:56 +00:00
|
|
|
</div>
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="mt-2 text-xs italic font-normal leading-tight text-blue-100">
|
2019-11-10 18:22:20 +00:00
|
|
|
Load more matches
|
|
|
|
|
<br />to have better results.
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
2020-02-13 19:16:13 +00:00
|
|
|
</Tooltip>
|
2019-11-08 14:39:56 +00:00
|
|
|
</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
</div>
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="flex items-center py-2 mt-2">
|
2019-11-10 18:22:20 +00:00
|
|
|
<div
|
|
|
|
|
v-for="(role, index) in stats.role"
|
|
|
|
|
:key="index"
|
|
|
|
|
class="flex flex-col items-center w-1/5"
|
|
|
|
|
>
|
2020-02-13 19:16:13 +00:00
|
|
|
<Tooltip>
|
2021-04-03 15:18:24 +00:00
|
|
|
<template #trigger>
|
2019-11-13 18:39:38 +00:00
|
|
|
<div class="flex flex-col justify-end w-2 h-12 bg-blue-900 rounded-full cursor-pointer">
|
2019-11-10 18:22:20 +00:00
|
|
|
<div
|
|
|
|
|
:style="{height: (role.count * 3 / mostPlayedRole) * role.wins / role.count + 'rem'}"
|
2019-11-13 18:49:38 +00:00
|
|
|
:class="roundedRoleWins(role.wins, role.count)"
|
|
|
|
|
class="bg-green-400"
|
2019-11-10 18:22:20 +00:00
|
|
|
></div>
|
|
|
|
|
<div
|
|
|
|
|
:style="{height: (role.count * 3 / mostPlayedRole) * role.losses / role.count + 'rem'}"
|
2019-11-13 18:49:38 +00:00
|
|
|
:class="roundedRoleLosses(role.losses, role.count)"
|
|
|
|
|
class="bg-red-400"
|
2019-11-10 18:22:20 +00:00
|
|
|
></div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
2021-04-03 15:18:24 +00:00
|
|
|
<template #default>
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="px-2 text-sm text-center text-white select-none">
|
2019-11-10 18:22:20 +00:00
|
|
|
<div>{{ role.role|capitalize }}</div>
|
|
|
|
|
<span
|
|
|
|
|
:class="winLossColor(role.wins, role.losses).win"
|
|
|
|
|
class="font-bold"
|
|
|
|
|
>{{ role.wins }}</span>
|
2020-06-11 18:55:39 +00:00
|
|
|
<span class="mx-1 font-bold text-gray-400">-</span>
|
2019-11-10 18:22:20 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(role.wins, role.losses).loss"
|
|
|
|
|
class="font-bold"
|
|
|
|
|
>{{ role.losses }}</span>
|
|
|
|
|
<div
|
|
|
|
|
:class="calculateWinrate(role.wins, role.count).color"
|
|
|
|
|
class="mt-1 font-bold"
|
|
|
|
|
>{{ calculateWinrate(role.wins, role.count).winrate|round }}%</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
2020-02-13 19:16:13 +00:00
|
|
|
</Tooltip>
|
2019-11-08 21:04:06 +00:00
|
|
|
<div
|
2019-11-10 18:22:20 +00:00
|
|
|
:style="{backgroundImage: `url(${require('@/assets/img/roles/' + role.role + '.png')})`}"
|
2020-06-11 18:55:39 +00:00
|
|
|
class="w-4 h-4 mt-1 bg-center bg-cover"
|
2019-11-10 18:22:20 +00:00
|
|
|
></div>
|
|
|
|
|
<div class="text-xs text-blue-200">{{ role.count }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="py-2 text-sm text-center">
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="flex items-baseline px-4 text-xs font-semibold text-blue-300 uppercase">
|
2020-06-11 18:55:39 +00:00
|
|
|
<div class="w-1/4 text-base text-left text-blue-400">Stat</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
<div class="w-1/4">Total</div>
|
|
|
|
|
<div class="w-1/4">Per min</div>
|
|
|
|
|
<div class="w-1/4">Avg</div>
|
|
|
|
|
</div>
|
|
|
|
|
<ul class="mt-1 text-gray-100">
|
|
|
|
|
<li
|
|
|
|
|
v-for="(stat, name, index) in globalStatsKeys"
|
2019-11-08 21:04:06 +00:00
|
|
|
:key="index"
|
2019-11-10 18:22:20 +00:00
|
|
|
:class="{'bg-blue-760': index % 2 !== 0}"
|
2020-06-11 18:55:39 +00:00
|
|
|
class="flex items-center justify-between px-4 py-1 leading-tight"
|
2019-11-08 21:04:06 +00:00
|
|
|
>
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="w-1/4 text-left capitalize">{{ name }}</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
<div class="w-1/4">{{ stat }}</div>
|
2019-11-14 20:59:51 +00:00
|
|
|
<div class="w-1/4">{{ stat / (stats.global.time / 60)|round }}</div>
|
|
|
|
|
<div class="w-1/4">{{ stat / stats.global.count|round }}</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
</li>
|
2020-06-11 18:55:39 +00:00
|
|
|
<li class="flex items-center justify-between px-4 py-1 leading-tight bg-blue-760">
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="w-1/4 text-left whitespace-no-wrap">Time</div>
|
2020-03-31 12:12:47 +00:00
|
|
|
<div class="w-1/4">{{ (stats.global.time / 3600).toFixed(1) + 'h' }}</div>
|
|
|
|
|
<div class="w-1/4"></div>
|
|
|
|
|
<div class="w-1/4">{{ (stats.global.time / stats.global.count)|secToTime(true) }}</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
</li>
|
2020-06-11 18:55:39 +00:00
|
|
|
<li class="flex items-center justify-between px-4 py-1 leading-tight">
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="w-1/4 text-left whitespace-no-wrap">KDA</div>
|
2019-11-08 21:04:06 +00:00
|
|
|
<div
|
2019-11-10 18:22:20 +00:00
|
|
|
class="w-1/4"
|
|
|
|
|
>{{ (stats.global.kills + stats.global.assists) / stats.global.deaths|round }}</div>
|
|
|
|
|
</li>
|
2020-06-11 18:55:39 +00:00
|
|
|
<li class="flex items-center justify-between px-4 py-1 leading-tight bg-blue-760">
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="w-1/4 text-left whitespace-no-wrap">Kill participation</div>
|
2020-03-31 12:12:47 +00:00
|
|
|
<div class="w-1/4">{{ stats.global.kp|percent }}</div>
|
|
|
|
|
</li>
|
2019-11-10 18:22:20 +00:00
|
|
|
</ul>
|
|
|
|
|
<template v-if="leagueStatsByType('Ranked').length">
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="flex items-baseline px-4 mt-3 text-xs font-semibold text-blue-300 uppercase">
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-5/12 text-base text-left text-blue-400">Ranked</div>
|
|
|
|
|
<div class="w-3/12">Winrate</div>
|
|
|
|
|
<div class="w-4/12">Record</div>
|
2019-11-08 14:39:56 +00:00
|
|
|
</div>
|
|
|
|
|
<ul class="mt-1 text-gray-100">
|
|
|
|
|
<li
|
2019-11-10 18:22:20 +00:00
|
|
|
v-for="(league, index) in leagueStatsByType('Ranked')"
|
2019-11-08 14:39:56 +00:00
|
|
|
:key="index"
|
|
|
|
|
:class="{'bg-blue-760': index % 2 !== 0}"
|
2020-06-11 18:55:39 +00:00
|
|
|
class="flex items-center justify-between px-4 py-1 leading-tight"
|
2019-11-08 14:39:56 +00:00
|
|
|
>
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-5/12 text-left capitalize">{{ league.name.toLowerCase() }}</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
<div
|
|
|
|
|
:class="calculateWinrate(league.wins, league.count).color"
|
2022-02-02 21:53:22 +00:00
|
|
|
class="w-3/12"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ calculateWinrate(league.wins, league.count).winrate|percent }}</div>
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-4/12">
|
2019-11-10 18:22:20 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(league.wins, league.losses).win"
|
2020-08-22 13:11:25 +00:00
|
|
|
class="font-semibold"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ league.wins }}</span>
|
2020-08-22 13:11:25 +00:00
|
|
|
<span class="mx-1 font-semibold text-gray-400">-</span>
|
2019-11-10 18:22:20 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(league.wins, league.losses).loss"
|
2020-08-22 13:11:25 +00:00
|
|
|
class="font-semibold"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ league.losses }}</span>
|
|
|
|
|
</div>
|
2019-11-08 14:39:56 +00:00
|
|
|
</li>
|
2019-11-10 18:22:20 +00:00
|
|
|
</ul>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="leagueStatsByType('Normal').length">
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="flex items-baseline px-4 mt-3 text-xs font-semibold text-blue-300 uppercase">
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-5/12 text-base text-left text-blue-400">Normal</div>
|
|
|
|
|
<div class="w-3/12">Winrate</div>
|
|
|
|
|
<div class="w-4/12">Record</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
</div>
|
|
|
|
|
<ul class="mt-1 text-gray-100">
|
|
|
|
|
<li
|
|
|
|
|
v-for="(league, index) in leagueStatsByType('Normal')"
|
|
|
|
|
:key="index"
|
|
|
|
|
:class="{'bg-blue-760': index % 2 !== 0}"
|
2020-06-11 18:55:39 +00:00
|
|
|
class="flex items-center justify-between px-4 py-1 leading-tight"
|
2019-11-10 18:22:20 +00:00
|
|
|
>
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-5/12 text-left capitalize">{{ league.name.toLowerCase() }}</div>
|
2019-11-08 21:04:06 +00:00
|
|
|
<div
|
2019-11-10 18:22:20 +00:00
|
|
|
:class="calculateWinrate(league.wins, league.count).color"
|
2022-02-02 21:53:22 +00:00
|
|
|
class="w-3/12"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ calculateWinrate(league.wins, league.count).winrate|percent }}</div>
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-4/12">
|
2019-11-10 18:22:20 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(league.wins, league.losses).win"
|
2020-08-22 13:11:25 +00:00
|
|
|
class="font-semibold"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ league.wins }}</span>
|
2020-08-22 13:11:25 +00:00
|
|
|
<span class="mx-1 font-semibold text-gray-400">-</span>
|
2019-11-10 18:22:20 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(league.wins, league.losses).loss"
|
2020-08-22 13:11:25 +00:00
|
|
|
class="font-semibold"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ league.losses }}</span>
|
|
|
|
|
</div>
|
2019-11-08 15:04:02 +00:00
|
|
|
</li>
|
2019-11-08 14:39:56 +00:00
|
|
|
</ul>
|
2019-11-10 18:22:20 +00:00
|
|
|
</template>
|
|
|
|
|
|
2020-08-22 13:11:25 +00:00
|
|
|
<div class="flex items-baseline px-4 mt-3 text-xs font-semibold text-blue-300 uppercase">
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-5/12 text-base text-left text-blue-400">Class</div>
|
|
|
|
|
<div class="w-3/12">Winrate</div>
|
|
|
|
|
<div class="w-4/12">Record</div>
|
2019-11-13 18:39:38 +00:00
|
|
|
</div>
|
|
|
|
|
<ul class="mt-1 text-gray-100">
|
|
|
|
|
<li
|
2021-09-15 15:59:42 +00:00
|
|
|
v-for="(championClass, index) in stats.class"
|
2019-11-13 18:39:38 +00:00
|
|
|
:key="index"
|
|
|
|
|
:class="{'bg-blue-760': index % 2 !== 0}"
|
2020-06-11 18:55:39 +00:00
|
|
|
class="flex items-center justify-between px-4 py-1 leading-tight"
|
2019-11-13 18:39:38 +00:00
|
|
|
>
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-5/12 text-left capitalize">{{ championClass.id }}</div>
|
2019-11-13 18:39:38 +00:00
|
|
|
<div
|
|
|
|
|
:class="calculateWinrate(championClass.wins, championClass.count).color"
|
2022-02-02 21:53:22 +00:00
|
|
|
class="w-3/12"
|
2019-11-13 18:39:38 +00:00
|
|
|
>{{ calculateWinrate(championClass.wins, championClass.count).winrate|percent }}</div>
|
2022-02-02 21:53:22 +00:00
|
|
|
<div class="w-4/12">
|
2019-11-13 18:39:38 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(championClass.wins, championClass.losses).win"
|
2020-08-22 13:11:25 +00:00
|
|
|
class="font-semibold"
|
2019-11-13 18:39:38 +00:00
|
|
|
>{{ championClass.wins }}</span>
|
2020-08-22 13:11:25 +00:00
|
|
|
<span class="mx-1 font-semibold text-gray-400">-</span>
|
2019-11-13 18:39:38 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(championClass.wins, championClass.losses).loss"
|
2020-08-22 13:11:25 +00:00
|
|
|
class="font-semibold"
|
2019-11-13 18:39:38 +00:00
|
|
|
>{{ championClass.losses }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
2019-11-10 18:22:20 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="flex flex-col items-center pb-2 leading-snug">
|
|
|
|
|
<div
|
2020-06-11 18:55:39 +00:00
|
|
|
class="text-xl text-teal-400"
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ calculateWinrate(stats.global.wins, stats.global.count).winrate|percent }}</div>
|
|
|
|
|
<div class="flex text-sm">
|
|
|
|
|
<span
|
|
|
|
|
:class="winLossColor(stats.global.wins, stats.global.losses).win"
|
2019-11-13 18:39:38 +00:00
|
|
|
class
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ stats.global.wins }}</span>
|
2020-06-11 18:55:39 +00:00
|
|
|
<span class="mx-1 font-bold text-gray-400">-</span>
|
2019-11-10 18:22:20 +00:00
|
|
|
<span
|
|
|
|
|
:class="winLossColor(stats.global.wins, stats.global.losses).loss"
|
2019-11-13 18:39:38 +00:00
|
|
|
class
|
2019-11-10 18:22:20 +00:00
|
|
|
>{{ stats.global.losses }}</span>
|
2019-11-08 14:39:56 +00:00
|
|
|
</div>
|
2019-11-10 18:22:20 +00:00
|
|
|
<span class="text-xs">Global winrate</span>
|
2019-11-08 14:39:56 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import { mapState } from 'vuex'
|
2020-02-13 19:16:13 +00:00
|
|
|
import Tooltip from '@/components/Common/Tooltip.vue'
|
2019-11-08 14:39:56 +00:00
|
|
|
import { gameModes } from '@/data/data.js'
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
components: {
|
2020-02-13 19:16:13 +00:00
|
|
|
Tooltip,
|
2019-11-08 14:39:56 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
computed: {
|
2019-11-08 21:04:06 +00:00
|
|
|
mostPlayedRole() {
|
|
|
|
|
return Math.max(...this.stats.role.map(r => r.count), 0)
|
2019-11-08 14:39:56 +00:00
|
|
|
},
|
|
|
|
|
globalStatsKeys() {
|
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
2021-09-15 15:59:42 +00:00
|
|
|
const { id, wins, losses, count, time, kp, ...rest } = this.stats.global
|
2019-11-08 14:39:56 +00:00
|
|
|
return rest
|
|
|
|
|
},
|
|
|
|
|
...mapState({
|
2019-12-27 17:38:43 +00:00
|
|
|
stats: state => state.summoner.overview.stats
|
2019-11-08 14:39:56 +00:00
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
|
calculateWinrate(wins, count) {
|
2019-11-12 17:20:25 +00:00
|
|
|
const winrate = count !== 0 ? wins / count * 100 : 0
|
2019-11-08 14:39:56 +00:00
|
|
|
const color = winrate >= 50 ? 'text-green-400' : 'text-red-400'
|
|
|
|
|
return {
|
|
|
|
|
winrate,
|
|
|
|
|
color
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
leagueStatsByType(typeName) {
|
2019-11-08 21:04:06 +00:00
|
|
|
return this.stats.league
|
2019-11-08 14:39:56 +00:00
|
|
|
.map(l => {
|
2021-09-15 15:59:42 +00:00
|
|
|
return { ...l, ...gameModes[l.id] }
|
2019-11-08 14:39:56 +00:00
|
|
|
})
|
|
|
|
|
.filter(l => l.type === typeName)
|
2019-11-09 22:24:12 +00:00
|
|
|
},
|
2019-11-13 18:49:38 +00:00
|
|
|
roundedRoleLosses(win, count) {
|
|
|
|
|
return win === count ? 'rounded-full' : 'rounded-b-full'
|
|
|
|
|
},
|
|
|
|
|
roundedRoleWins(win, count) {
|
|
|
|
|
return win === count ? 'rounded-full' : 'rounded-t-full'
|
|
|
|
|
},
|
2019-11-09 22:24:12 +00:00
|
|
|
winLossColor(win, loss) {
|
|
|
|
|
const colors = {
|
|
|
|
|
win: 'text-gray-200',
|
|
|
|
|
loss: 'text-gray-200'
|
|
|
|
|
}
|
|
|
|
|
win >= loss ? colors.win = 'text-green-400' : colors.loss = 'text-red-400'
|
|
|
|
|
return colors
|
2019-11-08 14:39:56 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|