1
1
import React , { useState , useEffect } from "react" ;
2
2
import { getPubInfo } from "@/utils/login" ;
3
- import { prettyNum } from "@/utils/jsutils" ;
3
+ import { prettyNum , id2skin , dateParse , parseDailyStats } from "@/utils/jsutils" ;
4
4
import cosmetics from "@/../cosmetics.json" ;
5
5
import Nav from "@/components/nav" ;
6
+ import {
7
+ HoverCard ,
8
+ HoverCardContent ,
9
+ HoverCardTrigger ,
10
+ } from "@/components/ui/hover-card" ;
11
+ import {
12
+ Chart as ChartJS ,
13
+ CategoryScale ,
14
+ LinearScale ,
15
+ PointElement ,
16
+ LineElement ,
17
+ Title ,
18
+ Tooltip ,
19
+ Legend ,
20
+ } from "chart.js" ;
21
+ import { Line } from 'react-chartjs-2' ;
22
+
6
23
7
24
export default function Stats ( ) {
8
25
const urlData = new URL ( "https://" + window . location . hash . replace ( "#" , "q/" ) ) ;
9
- console . log ( urlData ) ;
26
+
10
27
if ( ! urlData . searchParams . get ( "user" ) ) {
11
28
return (
12
29
< main >
@@ -28,26 +45,65 @@ export default function Stats() {
28
45
} , [ ] ) ;
29
46
30
47
if ( user && ! user . error ) {
48
+ let stats = parseDailyStats ( user . dailyStats )
49
+ // console.log(user);
50
+ console . log ( stats )
31
51
return (
32
52
< main >
33
53
< Nav />
34
54
< div className = "w-full flex items-center justify-center p-5" >
35
55
< div className = "w-4/5" >
36
56
< p className = "text-3xl font-bold text-center" > Stats</ p >
57
+ < img src = { user . image } className = "rounded-full w-[60px]" > </ img >
37
58
< p className = "font-bold text-2xl" > { user . account . username } </ p >
38
59
< p className = "text-green-500" > General:</ p >
39
60
< p >
40
61
< span className = "text-sky-500" > Skins: </ span >
41
- < span className = "text-orange-400" >
42
- { user . account . skins . owned . length }
43
- </ span > { " " }
62
+ < HoverCard >
63
+ < HoverCardTrigger >
64
+ < span className = "text-orange-400" >
65
+ { user . account . skins . owned . length }
66
+ </ span >
67
+ </ HoverCardTrigger >
68
+ < HoverCardContent className = "max-h-[300px] overflow-x-auto" >
69
+ { user . account . skins . owned . map ( ( skin ) => {
70
+ let skinCont = id2skin ( skin ) ;
71
+ return (
72
+ < span key = { skin } >
73
+ < span > { skinCont . name } </ span >
74
+ < span className = "text-sky-500" > OG: </ span >
75
+ { skinCont . og ? "T" : "F" }
76
+ < br />
77
+ </ span >
78
+ ) ;
79
+ } ) }
80
+ </ HoverCardContent >
81
+ </ HoverCard > { " " }
44
82
/{ " " }
45
83
< span className = "text-orange-400" > { cosmetics . skins . length } </ span >
46
84
< br />
47
- < span className = "text-sky-500" > ranks : </ span >
85
+ < span className = "text-sky-500" > rank : </ span >
48
86
< span className = "text-orange-400" > { prettyNum ( user . rank ) } </ span >
49
87
< br />
50
-
88
+ < span className = "text-sky-500" > User Id: </ span >
89
+ < span className = "text-orange-400" >
90
+ { prettyNum ( user . account . id ) }
91
+ </ span >
92
+ < br />
93
+ < span className = "text-sky-500" > Profile Views: </ span >
94
+ < span className = "text-orange-400" >
95
+ { prettyNum ( user . account . profile_views ) }
96
+ </ span >
97
+ < br />
98
+ < span className = "text-sky-500" > XP: </ span >
99
+ < span className = "text-orange-400" >
100
+ { prettyNum ( user . account . xp ) }
101
+ </ span >
102
+ < br />
103
+ < span className = "text-sky-500" > kills: </ span >
104
+ < span className = "text-orange-400" >
105
+ { prettyNum ( user . totalStats . kills ) }
106
+ </ span >
51
107
</ p >
52
108
</ div >
53
109
</ div >
0 commit comments