@@ -10,7 +10,7 @@ import classnames from 'classnames';
10
10
import * as React from 'react' ;
11
11
/* tslint:disable-next-line:import-name */
12
12
import Chart from 'react-apexcharts' ;
13
- import { Col } from 'react-bootstrap' ;
13
+ import { Button , Modal } from 'react-bootstrap' ;
14
14
15
15
// @ts -ignore
16
16
// tslint:disable-next-line:import-name
@@ -34,7 +34,7 @@ export class LeaderboardElement extends React.Component<
34
34
optionsPie : {
35
35
chart : {
36
36
foreColor : 'gray' ,
37
- width : '50 %' ,
37
+ width : '100 %' ,
38
38
} ,
39
39
dataLabels : {
40
40
markers : {
@@ -155,6 +155,9 @@ export class LeaderboardElement extends React.Component<
155
155
stroke : {
156
156
curve : 'smooth' ,
157
157
} ,
158
+ tooltip : {
159
+ theme : 'dark' ,
160
+ } ,
158
161
xaxis : {
159
162
axisBorder : {
160
163
color : '#000' ,
@@ -179,19 +182,21 @@ export class LeaderboardElement extends React.Component<
179
182
} ,
180
183
} ;
181
184
return (
182
- < Col
183
- md = { 26 }
184
- style = { {
185
- animationDelay : `${ ( index % 10 ) * 0.15 } s` ,
186
- position : 'relative' ,
187
- } }
188
- className = { classnames ( 'mb-1' , styles . leader ) }
189
- onClick = { this . handleOnClick }
190
- onMouseEnter = { this . handleOnMouseEnter }
191
- onMouseLeave = { this . handleOnMouseLeave }
192
- >
193
- < div className = { classnames ( styles [ 'leader-wrap' ] ) } >
194
- < div className = { classnames ( styles [ 'player-info-1' ] ) } >
185
+ < >
186
+ < tr
187
+ style = { {
188
+ animationDelay : `${ ( index % 10 ) * 0.15 } s` ,
189
+ position : 'relative' ,
190
+ } }
191
+ className = { classnames ( 'mb-1' , styles . leader ) }
192
+ onClick = { this . handleOnClick }
193
+ onMouseEnter = { this . handleOnMouseEnter }
194
+ onMouseLeave = { this . handleOnMouseLeave }
195
+ >
196
+ < td
197
+ className = { classnames ( styles [ 'player-info-1' ] ) }
198
+ style = { { alignItems : 'flex-end' , paddingTop : 0 } }
199
+ >
195
200
< FontAwesomeIcon
196
201
style = { {
197
202
color :
@@ -233,7 +238,7 @@ export class LeaderboardElement extends React.Component<
233
238
) : (
234
239
< div
235
240
style = { {
236
- fontSize : 38 ,
241
+ color : 'white' ,
237
242
marginLeft : '4px' ,
238
243
} }
239
244
className = { classnames (
@@ -243,62 +248,52 @@ export class LeaderboardElement extends React.Component<
243
248
{ player . rank }
244
249
</ div >
245
250
) }
246
- < div className = { classnames ( styles [ 'leader-content' ] ) } >
247
- < div
248
- className = { classnames ( styles [ 'leader-name' ] ) }
249
- style = { {
250
- display : 'inline-block' ,
251
- } }
252
- >
253
- {
254
- < img
255
- width = { 35 }
256
- height = { 35 }
257
- // @ts -ignore
258
- src = { Avatar [ avatarName [ player . avatarId ] ] }
259
- className = { classnames ( {
260
- [ `${ styles [ 'leader-avatar' ] } ` ] : currentUsername !== player . username ,
261
- [ `${ styles [ 'leader-avatar-current' ] } ` ] : currentUsername === player . username ,
262
- } ) }
263
- />
264
- }
265
- </ div >
251
+ </ td >
266
252
267
- < div
268
- className = { classnames ( styles [ 'leader-score' ] ) }
269
- style = { {
270
- display : 'inline-block' ,
271
- } }
272
- >
273
- < div style = { { display : 'flex' } } >
274
- < div className = "col-auto" >
275
- < div
276
- className = { classnames ( 'text-light' , styles [ 'leader-score_title' ] ) }
277
- style = { {
278
- display : 'block' ,
279
- fontSize : '16px' ,
280
- whiteSpace : 'nowrap' ,
281
- } }
282
- title = { player . username }
283
- >
284
- < span style = { { fontFamily : 'Lato' } } > { `${ player . username . substr ( 0 , 15 ) } ${
285
- player . username . length > 15 ? '...' : ''
286
- } `} </ span >
287
- </ div >
288
- < div className = { classnames ( styles [ 'leader-flag' ] , 'mt-2' ) } >
289
- < ReactCountryFlag
290
- code = { player . country === 'null' ? player . country : 'IN' }
291
- svg
292
- alt = { player . country }
293
- />
294
- </ div >
253
+ < td className = { classnames ( styles [ 'leader-score' ] , 'text-center' , 'pb-0' ) } >
254
+ < div style = { { display : 'inline-flex' , float : 'left' } } >
255
+ < img
256
+ style = { { marginTop : '5px' } }
257
+ width = { 35 }
258
+ height = { 35 }
259
+ // @ts -ignore
260
+ src = { Avatar [ avatarName [ player . avatarId ] ] }
261
+ className = { classnames ( {
262
+ [ `${ styles [ 'leader-avatar' ] } ` ] : currentUsername !== player . username ,
263
+ [ `${ styles [ 'leader-avatar-current' ] } ` ] : currentUsername === player . username ,
264
+ } ) }
265
+ />
266
+ < div style = { { display : 'flex' } } >
267
+ < div className = "col-auto" >
268
+ < div
269
+ className = { classnames ( 'text-light' , styles [ 'leader-score_title' ] ) }
270
+ style = { {
271
+ display : 'block' ,
272
+ fontSize : '16px' ,
273
+ whiteSpace : 'nowrap' ,
274
+ } }
275
+ title = { player . username }
276
+ >
277
+ < span style = { { fontFamily : 'Lato' } } > { `${ player . username . substr ( 0 , 15 ) } ${
278
+ player . username . length > 15 ? '...' : ''
279
+ } `} </ span >
280
+ </ div >
281
+ < div
282
+ className = { classnames ( styles [ 'leader-flag' ] , 'mt-2' , 'ml-0' ) }
283
+ style = { { float : 'left' } }
284
+ >
285
+ < ReactCountryFlag
286
+ code = { player . country === 'null' ? player . country : 'IN' }
287
+ svg
288
+ alt = { player . country }
289
+ />
295
290
</ div >
296
291
</ div >
297
292
</ div >
298
293
</ div >
299
- </ div >
300
-
301
- < div className = { classnames ( styles [ 'player-info-2' ] ) } >
294
+ </ td >
295
+ < IconsComponent player = { player } />
296
+ < td >
302
297
{ ! ( isPlayAgainstDisabled || currentUsername === player . username ) ? (
303
298
< div style = { { fontSize : '0.55em' , cursor : 'pointer' } } title = { `Start match` } >
304
299
< img
@@ -320,43 +315,41 @@ export class LeaderboardElement extends React.Component<
320
315
/>
321
316
</ div >
322
317
) : null }
323
- </ div >
324
- </ div >
325
- < div >
326
- < IconsComponent player = { player } />
327
- </ div >
328
- < div
329
- style = { {
330
- borderTop : `${ this . state . isModelOpen ? '1px solid grey' : '' } ` ,
331
- display : 'flex' ,
332
- justifyContent : 'space-between' ,
333
- } }
334
- >
335
- { this . state . isModelOpen ? (
336
- < div
337
- className = { classnames ( styles . chart_holder , 'row' , 'justify-content-center' ) }
338
- onClick = { ( event ) => {
339
- event . stopPropagation ( ) ;
340
- } }
341
- >
342
- < div className = { classnames ( styles . chart_div , styles . pie_chart ) } >
343
- < Chart
344
- options = { this . state . optionsPie }
345
- series = { [ player . ties , player . wins , player . losses ] }
346
- type = "donut"
347
- width = "400"
348
- />
349
- < div className = { classnames ( styles . winning_streak ) } >
350
- Highest winning streak: { maxWinningStreak }
318
+ </ td >
319
+ </ tr >
320
+ < div onClick = { ( e ) => e . stopPropagation ( ) } >
321
+ < Modal
322
+ show = { this . state . isModelOpen }
323
+ onHide = { this . handleOnClick }
324
+ animation = { false }
325
+ className = "leaderboard-modal"
326
+ >
327
+ < Modal . Header style = { { backgroundColor : '#2c2c2c' , borderBottom : '0px' } } >
328
+ < Button className = "close" onClick = { this . handleOnClick } style = { { color : 'white' } } >
329
+ ×
330
+ </ Button >
331
+ </ Modal . Header >
332
+ < Modal . Body style = { { backgroundColor : '#2c2c2c' } } >
333
+ < div className = { classnames ( styles . chart_holder , 'row' , 'justify-content-center' ) } >
334
+ < div className = { classnames ( styles . chart_div , styles . pie_chart ) } >
335
+ < Chart
336
+ options = { this . state . optionsPie }
337
+ series = { [ player . ties , player . wins , player . losses ] }
338
+ type = "donut"
339
+ width = "100%"
340
+ />
341
+ < div className = { classnames ( styles . winning_streak ) } >
342
+ Highest winning streak: { maxWinningStreak }
343
+ </ div >
344
+ </ div >
345
+ < div className = { classnames ( styles . chart_div ) } >
346
+ < Chart options = { optionsLine } series = { [ series ] } type = "line" width = "100%" />
351
347
</ div >
352
348
</ div >
353
- < div className = { classnames ( styles . chart_div ) } >
354
- < Chart options = { optionsLine } series = { [ series ] } type = "line" width = "760" />
355
- </ div >
356
- </ div >
357
- ) : null }
349
+ </ Modal . Body >
350
+ </ Modal >
358
351
</ div >
359
- </ Col >
352
+ </ >
360
353
) ;
361
354
}
362
355
}
0 commit comments