2022-23 Soccer Statistics - Cerritos
-
Games23
-
Goals74
-
Goals/g3.22
-
Shot %.173
-
Shots/g18.6
-
GAA0.56
Team Summary
Title | Record |
---|---|
Overall | 21-1-2 (.917) |
Conference | 10-0 (1.000) |
Streak | Lost 1 |
Home | 12-1-1 |
Away | 8-0 |
Neutral | 1-0-1 |
Team Stats
Statistics | Overall | Conf | ||
---|---|---|---|---|
Games | 23 | 1st | 9 | 1st |
Shots | 428 | 1st | 158 | 1st |
Goals scored | 74 | 1st | 33 | 1st |
Shot percentage | .173 | 4th | .209 | 3rd |
Shots-per game | 18.6 | 1st | 17.6 | 1st |
Shots on goal | 224 | 1st | 87 | 1st |
SOG percentage | .523 | 3rd | .551 | 2nd |
Assists | 64 | 1st | 28 | 1st |
Corner kicks | 123 | 1st | 48 | 1st |
Penalty kicks | 4-5 | 1st | 2-2 | 1st |
Yellow cards | 33 | 2nd | 16 | 1st |
Red cards | 1 | 2nd | 1 | 1st |
Shutouts | 12 | 2nd | 4 | 2nd |
Home Attendance | 3,525 | 1st | 1,325 | 1st |
Home Attendance average | 272 | 1st | 332 | 1st |
Scoring
# | Name | Yr | Pos | gp | gs | g/g | a/g | pts/g |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 15 | .00 | .00 | .00 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 8 | .00 | .00 | .00 |
2 | Diego Alvarado | Frosh | M | 15 | - | .00 | .07 | .07 |
3 | Alfredo Ortiz | Soph | D | 23 | 22 | .09 | .35 | .52 |
4 | Jaret Rocha | Soph | D | 18 | 16 | .17 | .00 | .33 |
5 | Allen Perez | Soph | M | 17 | - | .06 | .06 | .18 |
6 | Raul Ortiz | Soph | M | 23 | 23 | .04 | .04 | .13 |
7 | Julian Vazquez | Frosh | F | 23 | 5 | .39 | .13 | .91 |
8 | Miguel Martinez | Soph | M | 23 | 20 | .04 | .00 | .09 |
9 | Pablo Caparelli | Soph | F | 23 | 22 | .35 | .43 | 1.13 |
10 | Gabriel Oropeza | Soph | M | 23 | 3 | .30 | .30 | .91 |
11 | Uriel Sanchez | Soph | M | 22 | 21 | .18 | .27 | .64 |
12 | Mikel Villarreal | Soph | D | 20 | 6 | .00 | .00 | .00 |
13 | Christian Perez | Soph | F | 17 | - | .24 | .12 | .59 |
14 | Ernesto Vergara | Soph | D | 23 | 22 | .04 | .04 | .13 |
15 | Bryan Saldana | Frosh | M | 10 | - | .00 | .10 | .10 |
16 | Antonio Negrete | Soph | M | 23 | 23 | .48 | .13 | 1.09 |
17 | Nathan Garcia | Soph | M | 13 | - | .00 | .08 | .08 |
18 | Johan Duenas | Soph | D | 21 | 1 | .00 | .05 | .05 |
19 | Jason Alvarez | Frosh | F | 18 | 3 | .11 | .17 | .39 |
20 | Kobe Chavez | Frosh | M | 22 | 4 | .50 | .32 | 1.32 |
21 | Chris Corona | Soph | F | 21 | 2 | .10 | .10 | .29 |
22 | Michael Rodriguez | Soph | F | 23 | 19 | .09 | .04 | .22 |
23 | Taylor Demarais | Frosh | F | 5 | - | .00 | .00 | .00 |
24 | Enrique Penate | Soph | F | 22 | 18 | .14 | .00 | .27 |
25 | Diego Cortes | Frosh | F | 11 | - | .09 | .18 | .36 |
27 | Andrew Valencia | Frosh | M | 13 | - | .08 | .15 | .31 |
28 | Damian Rodriguez | Soph | D | 11 | - | .00 | .00 | .00 |
30 | Peter Silva | Frosh | GK | - | - | - | - | - |
Totals
-
gp 23
-
gs 23
-
g/g 3.22
-
a/g 2.78
-
pts/g 9.22
Opponents
-
gp 23
-
gs 23
-
g/g 3.22
-
a/g .17
-
pts/g 1.30
Shooting
# | Name | Yr | Pos | gp | sh/g | sh%/g | sog/g | sog%/g |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | .00 | - | .00 | - |
1 | Juan Pablo Camacho | Frosh | GK | 13 | .00 | - | .00 | - |
2 | Diego Alvarado | Frosh | M | 15 | .13 | .000 | .07 | .500 |
3 | Alfredo Ortiz | Soph | D | 23 | .65 | .133 | .26 | .400 |
4 | Jaret Rocha | Soph | D | 18 | .33 | .500 | .17 | .500 |
5 | Allen Perez | Soph | M | 17 | .24 | .250 | .12 | .500 |
6 | Raul Ortiz | Soph | M | 23 | .39 | .111 | .26 | .667 |
7 | Julian Vazquez | Frosh | F | 23 | 2.04 | .191 | 1.09 | .532 |
8 | Miguel Martinez | Soph | M | 23 | .52 | .083 | .22 | .417 |
9 | Pablo Caparelli | Soph | F | 23 | 1.87 | .186 | 1.00 | .535 |
10 | Gabriel Oropeza | Soph | M | 23 | 2.61 | .117 | 1.13 | .433 |
11 | Uriel Sanchez | Soph | M | 22 | 1.27 | .143 | .55 | .429 |
12 | Mikel Villarreal | Soph | D | 20 | .00 | - | .00 | - |
13 | Christian Perez | Soph | F | 17 | 1.06 | .222 | .35 | .333 |
14 | Ernesto Vergara | Soph | D | 23 | .61 | .071 | .17 | .286 |
15 | Bryan Saldana | Frosh | M | 10 | .40 | .000 | .30 | .750 |
16 | Antonio Negrete | Soph | M | 23 | 1.74 | .275 | 1.09 | .625 |
17 | Nathan Garcia | Soph | M | 13 | .23 | .000 | .08 | .333 |
18 | Johan Duenas | Soph | D | 21 | .05 | .000 | .00 | .000 |
19 | Jason Alvarez | Frosh | F | 18 | 1.22 | .091 | .67 | .545 |
20 | Kobe Chavez | Frosh | M | 22 | 1.95 | .256 | 1.18 | .605 |
21 | Chris Corona | Soph | F | 21 | .62 | .154 | .33 | .538 |
22 | Michael Rodriguez | Soph | F | 23 | .78 | .111 | .43 | .556 |
23 | Taylor Demarais | Frosh | F | 5 | .40 | .000 | .20 | .500 |
24 | Enrique Penate | Soph | F | 22 | .68 | .200 | .50 | .733 |
25 | Diego Cortes | Frosh | F | 11 | .36 | .250 | .36 | 1.000 |
27 | Andrew Valencia | Frosh | M | 13 | .38 | .200 | .23 | .600 |
28 | Damian Rodriguez | Soph | D | 11 | .00 | - | .00 | - |
30 | Peter Silva | Frosh | GK | - | - | - | - | - |
Totals
-
gp 23
-
sh/g 18.61
-
sh%/g .173
-
sog/g 9.74
-
sog%/g .523
Opponents
-
gp 23
-
sh/g 5.30
-
sh%/g .107
-
sog/g 2.91
-
sog%/g .549
Goalkeepers
# | Name | Yr | Pos | gp | gs | ga/g | gaa | sv/g |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 16 | .40 | 0.52 | 1.90 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 7 | .38 | 0.63 | 2.00 |
30 | Peter Silva | Frosh | GK | - | - | - | - | - |
Totals
-
gp 23
-
gs 23
-
ga/g .57
-
gaa 0.56
-
sv/g 2.78
Opponents
-
gp 23
-
gs 23
-
ga/g 3.22
-
gaa 3.17
-
sv/g 6.04
Goalkeepers Ext.
# | Name | Yr | Pos | gp | min/g |
---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 69:00 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 55:23 |
30 | Peter Silva | Frosh | GK | - | 0:00 |
Totals
-
gp 23
-
min/g 91:18
Opponents
-
gp 23
-
min/g 91:18
Scoring
# | Name | Yr | Pos | gp | gs | g | a | pts |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 15 | 0 | 0 | 0 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 8 | 0 | 0 | 0 |
2 | Diego Alvarado | Frosh | M | 15 | - | 0 | 1 | 1 |
3 | Alfredo Ortiz | Soph | D | 23 | 22 | 2 | 8 | 12 |
4 | Jaret Rocha | Soph | D | 18 | 16 | 3 | 0 | 6 |
5 | Allen Perez | Soph | M | 17 | - | 1 | 1 | 3 |
6 | Raul Ortiz | Soph | M | 23 | 23 | 1 | 1 | 3 |
7 | Julian Vazquez | Frosh | F | 23 | 5 | 9 | 3 | 21 |
8 | Miguel Martinez | Soph | M | 23 | 20 | 1 | 0 | 2 |
9 | Pablo Caparelli | Soph | F | 23 | 22 | 8 | 10 | 26 |
10 | Gabriel Oropeza | Soph | M | 23 | 3 | 7 | 7 | 21 |
11 | Uriel Sanchez | Soph | M | 22 | 21 | 4 | 6 | 14 |
12 | Mikel Villarreal | Soph | D | 20 | 6 | 0 | 0 | 0 |
13 | Christian Perez | Soph | F | 17 | - | 4 | 2 | 10 |
14 | Ernesto Vergara | Soph | D | 23 | 22 | 1 | 1 | 3 |
15 | Bryan Saldana | Frosh | M | 10 | - | 0 | 1 | 1 |
16 | Antonio Negrete | Soph | M | 23 | 23 | 11 | 3 | 25 |
17 | Nathan Garcia | Soph | M | 13 | - | 0 | 1 | 1 |
18 | Johan Duenas | Soph | D | 21 | 1 | 0 | 1 | 1 |
19 | Jason Alvarez | Frosh | F | 18 | 3 | 2 | 3 | 7 |
20 | Kobe Chavez | Frosh | M | 22 | 4 | 11 | 7 | 29 |
21 | Chris Corona | Soph | F | 21 | 2 | 2 | 2 | 6 |
22 | Michael Rodriguez | Soph | F | 23 | 19 | 2 | 1 | 5 |
23 | Taylor Demarais | Frosh | F | 5 | - | 0 | 0 | 0 |
24 | Enrique Penate | Soph | F | 22 | 18 | 3 | 0 | 6 |
25 | Diego Cortes | Frosh | F | 11 | - | 1 | 2 | 4 |
27 | Andrew Valencia | Frosh | M | 13 | - | 1 | 2 | 4 |
28 | Damian Rodriguez | Soph | D | 11 | - | 0 | 0 | 0 |
30 | Peter Silva | Frosh | GK | - | - | - | - | 0 |
Totals
-
gp 23
-
gs 23
-
g 74
-
a 64
-
pts 212
Opponents
-
gp 23
-
gs 23
-
g 13
-
a 4
-
pts 30
Shooting
# | Name | Yr | Pos | gp | sh | sh% | sog | sog% |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 0 | - | 0 | - |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 0 | - | 0 | - |
2 | Diego Alvarado | Frosh | M | 15 | 2 | .000 | 1 | .500 |
3 | Alfredo Ortiz | Soph | D | 23 | 15 | .133 | 6 | .400 |
4 | Jaret Rocha | Soph | D | 18 | 6 | .500 | 3 | .500 |
5 | Allen Perez | Soph | M | 17 | 4 | .250 | 2 | .500 |
6 | Raul Ortiz | Soph | M | 23 | 9 | .111 | 6 | .667 |
7 | Julian Vazquez | Frosh | F | 23 | 47 | .191 | 25 | .532 |
8 | Miguel Martinez | Soph | M | 23 | 12 | .083 | 5 | .417 |
9 | Pablo Caparelli | Soph | F | 23 | 43 | .186 | 23 | .535 |
10 | Gabriel Oropeza | Soph | M | 23 | 60 | .117 | 26 | .433 |
11 | Uriel Sanchez | Soph | M | 22 | 28 | .143 | 12 | .429 |
12 | Mikel Villarreal | Soph | D | 20 | 0 | - | 0 | - |
13 | Christian Perez | Soph | F | 17 | 18 | .222 | 6 | .333 |
14 | Ernesto Vergara | Soph | D | 23 | 14 | .071 | 4 | .286 |
15 | Bryan Saldana | Frosh | M | 10 | 4 | .000 | 3 | .750 |
16 | Antonio Negrete | Soph | M | 23 | 40 | .275 | 25 | .625 |
17 | Nathan Garcia | Soph | M | 13 | 3 | .000 | 1 | .333 |
18 | Johan Duenas | Soph | D | 21 | 1 | .000 | 0 | .000 |
19 | Jason Alvarez | Frosh | F | 18 | 22 | .091 | 12 | .545 |
20 | Kobe Chavez | Frosh | M | 22 | 43 | .256 | 26 | .605 |
21 | Chris Corona | Soph | F | 21 | 13 | .154 | 7 | .538 |
22 | Michael Rodriguez | Soph | F | 23 | 18 | .111 | 10 | .556 |
23 | Taylor Demarais | Frosh | F | 5 | 2 | .000 | 1 | .500 |
24 | Enrique Penate | Soph | F | 22 | 15 | .200 | 11 | .733 |
25 | Diego Cortes | Frosh | F | 11 | 4 | .250 | 4 | 1.000 |
27 | Andrew Valencia | Frosh | M | 13 | 5 | .200 | 3 | .600 |
28 | Damian Rodriguez | Soph | D | 11 | 0 | - | 0 | - |
30 | Peter Silva | Frosh | GK | - | - | - | - | - |
Totals
-
gp 23
-
sh 428
-
sh% .173
-
sog 224
-
sog% .523
Opponents
-
gp 23
-
sh 122
-
sh% .107
-
sog 67
-
sog% .549
Misc.
# | Name | Yr | Pos | gp | yc | rc | pk | gw |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 0 | 0 | 0-0 | 0 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 0 | 0 | 0-0 | 0 |
2 | Diego Alvarado | Frosh | M | 15 | 0 | 0 | 0-0 | 0 |
3 | Alfredo Ortiz | Soph | D | 23 | 2 | 0 | 0-0 | 2 |
4 | Jaret Rocha | Soph | D | 18 | 3 | 0 | 0-0 | 0 |
5 | Allen Perez | Soph | M | 17 | 1 | 0 | 0-0 | 0 |
6 | Raul Ortiz | Soph | M | 23 | 2 | 0 | 0-0 | 1 |
7 | Julian Vazquez | Frosh | F | 23 | 3 | 0 | 0-0 | 2 |
8 | Miguel Martinez | Soph | M | 23 | 1 | 0 | 0-0 | 0 |
9 | Pablo Caparelli | Soph | F | 23 | 2 | 0 | 2-2 | 5 |
10 | Gabriel Oropeza | Soph | M | 23 | 1 | 0 | 0-0 | 2 |
11 | Uriel Sanchez | Soph | M | 22 | 3 | 0 | 2-2 | 0 |
12 | Mikel Villarreal | Soph | D | 20 | 3 | 0 | 0-0 | 0 |
13 | Christian Perez | Soph | F | 17 | 0 | 0 | 0-1 | 0 |
14 | Ernesto Vergara | Soph | D | 23 | 4 | 0 | 0-0 | 1 |
15 | Bryan Saldana | Frosh | M | 10 | 0 | 0 | 0-0 | 0 |
16 | Antonio Negrete | Soph | M | 23 | 2 | 0 | 0-0 | 4 |
17 | Nathan Garcia | Soph | M | 13 | 0 | 0 | 0-0 | 0 |
18 | Johan Duenas | Soph | D | 21 | 1 | 0 | 0-0 | 0 |
19 | Jason Alvarez | Frosh | F | 18 | 0 | 0 | 0-0 | 0 |
20 | Kobe Chavez | Frosh | M | 22 | 1 | 0 | 0-0 | 3 |
21 | Chris Corona | Soph | F | 21 | 1 | 0 | 0-0 | 0 |
22 | Michael Rodriguez | Soph | F | 23 | 1 | 0 | 0-0 | 0 |
23 | Taylor Demarais | Frosh | F | 5 | 0 | 0 | 0-0 | 0 |
24 | Enrique Penate | Soph | F | 22 | 0 | 0 | 0-0 | 0 |
25 | Diego Cortes | Frosh | F | 11 | 0 | 0 | 0-0 | 0 |
27 | Andrew Valencia | Frosh | M | 13 | 0 | 0 | 0-0 | 0 |
28 | Damian Rodriguez | Soph | D | 11 | 0 | 0 | 0-0 | 0 |
30 | Peter Silva | Frosh | GK | - | - | - | 0-0 | - |
Totals
-
gp 23
-
yc 33
-
rc 1
-
pk 4-5
-
gw 20
Opponents
-
gp 23
-
yc 39
-
rc 3
-
pk 3-4
-
gw 1
Goalkeepers
# | Name | Yr | Pos | gp | gs | ga | sv | sv% |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 16 | 8 | 38 | .826 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 7 | 5 | 26 | .839 |
30 | Peter Silva | Frosh | GK | - | - | - | - | - |
Totals
-
gp 23
-
gs 23
-
ga 13
-
sv 64
-
sv% .831
Opponents
-
gp 23
-
gs 23
-
ga 74
-
sv 139
-
sv% .653
Goalkeepers Ext.
# | Name | Yr | Pos | gp | wins | losses | ties | shutouts | min |
---|---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 20 | 14 | 1 | 0 | 6/4 | 1380:00 |
1 | Juan Pablo Camacho | Frosh | GK | 13 | 6 | 0 | 2 | 2/4 | 720:00 |
30 | Peter Silva | Frosh | GK | - | - | - | - | 0/0 | 0:00 |
Totals
-
gp 23
-
wins 20
-
losses 1
-
ties 2
-
shutouts 12
-
min 2100:00
Opponents
-
gp 23
-
wins 1
-
losses 19
-
ties 2
-
shutouts 3
-
min 2100:00
Scoring
# | Name | Yr | Pos | gp | gs | g/g | a/g | pts/g |
---|---|---|---|---|---|---|---|---|
0 | Steven Ruiz | Frosh | GK | 8 | 6 | .00 | .00 | .00 |
1 | Juan Pablo Camacho | Frosh | GK | 4 | 3 | .00 | .00 | .00 |
2 | Diego Alvarado | Frosh | M | 3 | - | .00 | .00 | .00 |
3 | Alfredo Ortiz | Soph | D | 9 | 9 | .11 | .33 | .56 |
4 | Jaret Rocha | Soph | D | 4 | 3 | .25 | .00 | .50 |
5 | Allen Perez | Soph | M | 6 | - | .00 | .17 | .17 |
6 | Raul Ortiz | Soph | M | 9 | 9 | .00 | .11 | .11 |
7 | Julian Vazquez | Frosh | F | 9 | 4 | .67 | .11 | 1.44 |
8 | Miguel Martinez | Soph | M | 9 | 9 | .00 | .00 | .00 |
9 | Pablo Caparelli | Soph | F | 9 | 9 | .22 | .56 | 1.00 |
10 | Gabriel Oropeza | Soph | M | 9 | 3 | .33 | .56 | 1.22 |
11 | Uriel Sanchez | Soph | M | 9 | 8 | .33 | .22 | .89 |
12 | Mikel Villarreal | Soph | D | 9 | 4 | .00 | .00 | .00 |
13 | Christian Perez | Soph | F | 6 | - | .33 | .17 | .83 |
14 | Ernesto Vergara | Soph | D | 9 | 9 | .00 | .00 | .00 |
15 | Bryan Saldana | Frosh | M | 4 | - | .00 | .00 | .00 |
16 | Antonio Negrete | Soph | M | 9 | 9 | .56 | .22 | 1.33 |
17 | Nathan Garcia | Soph | M | 5 | - | .00 | .00 | .00 |
18 | Johan Duenas | Soph | D | 9 | - | .00 | .11 | .11 |
19 | Jason Alvarez | Frosh | F | 9 | 1 | .11 | .11 | .33 |
20 | Kobe Chavez | Frosh | M | 9 | 1 | .78 | .22 | 1.78 |
21 | Chris Corona | Soph | F | 7 | - | .14 | .00 | .29 |
22 | Michael Rodriguez | Soph | F | 9 | 7 | .11 | .00 | .22 |
23 | Taylor Demarais | Frosh | F | - | - | - | - | - |
24 | Enrique Penate | Soph | F | 8 | 5 | .00 | .00 | .00 |
25 | Diego Cortes | Frosh | F | 6 | - | .00 | .17 | .17 |
27 | Andrew Valencia | Frosh | M | 5 | - | .00 | .40 | .40 |
28 | Damian Rodriguez | Soph | D | 5 | - | .00 | .00 | .00 |
30 | Peter Silva | Frosh | GK | - | - | - | - | - |
Totals
-
gp 9
-
gs 9
-
g/g 3.67
-
a/g 3.11
-
pts/g 10.44
Opponents
-
gp 9
-
gs 9
-
g/g 3.67
-
a/g .11
-
pts/g 1.67
Shooting
There was a problem with a Velocity script | |
Page | sports/msoc/2022-23/Conference/South_Coast-South/teams/teaminfo-network-template |
Error | Invocation of method 'includeAgain' in class com.prestosports.render.ContentEngineInvoker threw exception javax.servlet.ServletException: javax.servlet.ServletException: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 36,078 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. at g5xpj7agcui7frapsports/msoc/2022-23/Conference/South_Coast-South/teams/teaminfo-network-template[line 132, column 26] |
Page source: |
1: ## PICK UP OPTIONS 2: $website.include("options") 3: #set ($options = $request.getAttribute("options")) 4: 5: #set ($locale = "en_us") 6: #set ($locale = $options.get("locale")) 7: 8: #set ($showConf = true) 9: #if ($options.get("stats_hide_conference") and $options.get("stats_hide_conference").equalsIgnoreCase("hide")) 10: #set ($showConf = false) 11: #end 12: 13: #set ($teamId = $attributes.get("teamId")) 14: #set ($stats = $splits.overall) 15: 16: #set ($pos = "") 17: #if ($sport.enumCode == 0) ## Football 18: #set ($pos = "off") 19: #elseif ($sport.enumCode == 2) ## Basketball 20: #set ($pos = "sh") 21: #elseif ($sport.enumCode == 3) ## Soccer 22: #set ($pos = "sc") 23: #elseif ($sport.enumCode == 9) ## Field Hockey 24: #set ($pos = "fielder") 25: #end 26: 27: #set ($posEsc = $formatter.escapeXml($request.getParameter("pos").toLowerCase())) 28: #if ($posEsc.length() > 0) 29: #set ($pos = $posEsc) 30: #end 31: 32: #if ($sport.enumCode == 9) ## Field Hockey 33: #if ($pos == "goalie") 34: #set ($pos = "fielder") 35: #end 36: #if ($pos == "gg") 37: #set ($pos = "kg") 38: #end 39: #end 40: 41: #set ($restriction = 0) 42: #set ($restrictionEsc = $formatter.escapeXml($request.getParameter("r"))) 43: #if ($restrictionEsc.length() > 0 && $restrictionEsc.equals("1")) 44: #set ($restriction = 1) 45: #end 46: 47: #set ($resultFormat = "AP1") 48: #if ($options.get("schedule_result_format").equals("L, 1-2")) 49: #set ($resultFormat = "AP2") 50: #end 51: 52: #set ($view = "profile") 53: #if ($request.getParameter("view")) 54: #set ($view = $formatter.escapeXml($!request.getParameter("view"))) 55: #end 56: 57: #if ($briefsCategoriesLabels) 58: #set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season")) 59: #set($firstCategoryPos = $briefsCategoriesSeason.keySet().iterator().next()) 60: #end 61: 62: #set ($showRoster = false) 63: #if ($options.get("stats_show_roster") and $options.get("stats_show_roster").equalsIgnoreCase("yes")) 64: #set ($showRoster = true) 65: #end 66: 67: #set ($showAttendance = true) 68: #if ($options.get("stats_show_attendance") and $options.get("stats_show_attendance").equalsIgnoreCase("hide")) 69: #set ($showAttendance = false) 70: #end 71: 72: ## MACROS 73: #macro (printTableHeader $label $class) 74: <th class="text-uppercase $class">$label</th> 75: #end 76: 77: #macro (printResultAriaLabel $event) 78: #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}") 79: #if ($event.neutralSite.length() > 0 || $event.home) 80: #set ($ariaLabel = "${ariaLabel} vs.") 81: #else 82: #set ($ariaLabel = "${ariaLabel} at") 83: #end 84: #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:") 85: #if ($event.neutralSite.length() > 0) 86: #set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:") 87: #end 88: #set ($ariaLabel = "${ariaLabel} Box Score") 89: aria-label="$ariaLabel" 90: #end 91: 92: #macro (printBriefCategory $briefCatLabel $briefCatPos $r) 93: #if ($locale == "en_gb" && $briefCatLabel == "Defense") 94: #set ($briefCatLabel = "Defence") 95: #end 96: 97: #if ($lineupDefaultSorting && $lineupDefaultSorting.containsKey($briefCatPos)) 98: #set ($sort = $lineupDefaultSorting.get($briefCatPos)) 99: #end 100: 101: #if ($allowChooseSort) 102: #set ($sortEsc = $formatter.escapeXml($request.getParameter("sort"))) 103: #if ($sortEsc.length() > 0) 104: #set ($sort = $sortEsc) 105: #end 106: #end 107: 108: #set ($url = "") 109: #set ($url = "${page.sectionPage.sectionPage.url}/players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&pos=${briefCatPos}&r=${r}&tmpl=stats-bios-template") 110: 111: #if ($lineupMin && $lineupMin.containsKey($briefCatPos)) 112: #set ($minStat = $lineupMin.get($briefCatPos)) 113: #set ($url = $url + "&min=" + $minStat) 114: #end 115: 116: #if ($lineupFilters) 117: #if ($lineupFilters.containsKey("cs")) 118: #set($url = $url + "&cs=n") 119: #end 120: 121: #if ($lineupFilters.containsKey("skipBlank")) 122: #set($skipBlank = $lineupFilters.get("skipBlank")) 123: 124: #if ($skipBlank.contains($briefCatPos)) 125: #set($url = $url + "&skipBlank=n") 126: #end 127: #end 128: #end 129: 130: <div class="my-3"> 131: <h5>$briefCatLabel</h5> 132: $website.includeAgain($url) 133: </div> 134: 135: #end ## printBriefCategory 136: 137: #macro(printBriefCategories $r) 138: ## Set this for the inner page to pull something out 139: #if ($r == 1) 140: #set ($restrictionLabel = "conf") 141: $!request.setAttribute("teamStats", $splits.conference) 142: #else 143: #set ($restrictionLabel = "overall") 144: $!request.setAttribute("teamStats", $splits.overall) 145: #end 146: 147: #if ($briefsCategoriesLabels) 148: 149: #set($allowChooseSort = false) 150: 151: #if ($lineupFilters && $lineupFilters.containsKey("allowChooseSort")) 152: #set ($allowChooseSort = true) 153: #end 154: 155: #if ($briefsCategoriesLabels.containsKey("Game")) 156: #set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game")) 157: 158: ## Print Game categories tables 159: ## Get the first Game category position 160: #set ($gamePos = $briefsCategoriesGame.keySet().iterator().next()) 161: 162: ## GAME 163: <div #if ($gamePosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-game" role="tabpanel"> 164: #foreach($briefsCatGame in $briefsCategoriesGame.entrySet()) 165: #printBriefCategory($briefsCatGame.value, $briefsCatGame.key, $r) 166: #end 167: </div> 168: 169: ## Print the Season categories tables 170: #set ($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season")) 171: 172: ## SEASON 173: <div #if ($seasonPosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-season" role="tabpanel"> 174: #foreach ($briefCat in $briefsCategoriesSeason.entrySet()) 175: #printBriefCategory($briefCat.value, $briefCat.key, $r) 176: #end 177: </div> 178: 179: ## Print the Minutes categories tables 180: #if ($briefsCategoriesLabels.containsKey("Minutes")) 181: #set($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes")) 182: #set($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next()) 183: 184: #set($showMinutesTab = false) 185: #if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos)) 186: #set($lineupMinOverallValues = $lineupMinTeam.get($minutesPos)) 187: 188: #set($lineupMinOverallStat = $lineupMinOverallValues[0]) 189: #set($lineupMinOverallMinVal = $lineupMinOverallValues[1]) 190: #set($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal)) 191: 192: #if ($tool.math.round($splits.overall[$lineupMinOverallStat]) && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue) 193: #set($showMinutesTab = true) 194: #end 195: #end 196: 197: #if ($showMinutesTab) 198: ## MINUTES 199: <div #if ($minutesPosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-minutes" role="tabpanel"> 200: #foreach($briefsCatMinutes in $briefsCategoriesMinutes.entrySet()) 201: #printBriefCategory($briefsCatMinutes.value, $briefsCatMinutes.key, $r) 202: #end 203: </div> 204: #end 205: #end ## end minutes 206: #else 207: 208: #set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season")) 209: ## SINGLE SEASON 210: #foreach($briefCat in $briefsCategoriesSeason.entrySet()) 211: #printBriefCategory($briefCat.value, $briefCat.key, $r) 212: #end 213: #end 214: 215: #elseif ($lineupFilters) 216: 217: ## All of the supported sports has lineupFilters, so print it without matter it does not have briefs category, yeah voleyball is you :) 218: #set ($sort = $formatter.escapeXml($request.getParameter("sort"))) 219: #set ($url = "../players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&r=${r}") 220: $website.includeAgain($url) 221: 222: #else 223: We do not support this sport 224: #end 225: #end ## printBriefCategories 226: 227: #macro (printCategories $briefCategoryLabels $v) 228: <div class="tab-container"> 229: <div class="d-flex flex-row text-nowrap align-items-center justify-content-center"> 230: <div class="secondary-tab-select-container flex-fill"> 231: <select class="tab-nav-select-helper form-select" id="teaminfo-tabs-secondary-${v}-select" aria-label="Choose a stat group"> 232: #foreach($label in $briefCategoryLabels.entrySet()) 233: #set($catLabel = $label.value) 234: #if ($locale == "en_gb" && $catLabel == "Defense") 235: #set ($catLabel = "Defence") 236: #end 237: <option value="#gamelog-${v}-${label.key}" #if ($pos == $key.pos || $foreach.first) selected #end>${catLabel}</option> 238: #end 239: </select> 240: <script> 241: $('.tab-nav-select-helper').on('change', function(e) { 242: var id = $(this).val(); 243: $('a[data-bs-target="' + id + '"]').tab('show'); 244: }); 245: </script> 246: </div> 247: </div> 248: <div class="tab-nav d-none"> 249: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs-secondary-${v}" role="tablist"> 250: #foreach($label in $briefCategoryLabels.entrySet()) 251: #set($catLabel = $label.value) 252: #if ($locale == "en_gb" && $catLabel == "Defense") 253: #set ($catLabel = "Defence") 254: #end 255: #set ($aClass = "nav-link text-nowrap text-center") 256: #if ($pos == $label.key || ($pos.length() == 0 && $velocityCount == 1)) 257: #set ($aClass = "${aClass} active") 258: #end 259: <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0"> 260: <a class="${aClass}" href="${page.url}?view=${v}&pos=${label.key}" role="tab" data-bs-toggle="tab" data-bs-target="#gamelog-${v}-${label.key}">${catLabel}</a> 261: </li> 262: #end 263: </ul> 264: </div> 265: <div class="tab-content p-3"> 266: #foreach ($briefCat in $briefCategoryLabels.entrySet()) 267: #set ($classAttr = "tab-pane") 268: #if ($briefCat.key == $pos || ($pos.length() == 0 && $velocityCount == 1)) 269: #set ($classAttr = "${classAttr} active") 270: #end 271: <div class="$classAttr" id="gamelog-${v}-${briefCat.key}" role="tabpanel"> 272: #if ($v == "gamelog") 273: #gamelogData($briefCat.key) 274: #elseif ($v == "splits") 275: #splitsTeamNetworkData($briefCat.key) 276: #end 277: </div> 278: #end 279: </div> 280: </div> 281: #end ## printCategories 282: 283: #macro (printSeasonGameMinutesTabs $r) 284: #if ($briefsCategoriesLabels.containsKey("Game")) 285: #set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game")) 286: #set ($gamePos = $briefsCategoriesGame.keySet().iterator().next()) 287: 288: #set ($restrictionLabel = "overall") 289: #if ($r == 1) 290: #set ($restrictionLabel = "conf") 291: #end 292: 293: #set ($showMinutesTab = false) 294: #if ($briefsCategoriesLabels.containsKey("Minutes")) 295: #set ($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes")) 296: #set ($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next()) 297: 298: #if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos)) 299: #set ($lineupMinOverallValues = $lineupMinTeam.get($minutesPos)) 300: #set ($lineupMinOverallStat = $lineupMinOverallValues[0]) 301: #set ($lineupMinOverallMinVal = $lineupMinOverallValues[1]) 302: #set ($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal)) 303: 304: #if ($tool.math.round($splits.overall[$lineupMinOverallStat]) && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue) 305: #set($showMinutesTab = true) 306: #end 307: #end 308: #end 309: <div class="tab-container"> 310: <div class="tab-nav"> 311: #set($gamePosActive = false) 312: #set($seasonPosActive = false) 313: #set($minutesPosActive = false) 314: 315: #if($pos.equals($gamePos) || $pos.endsWith("g") || $pos.endsWith("gext")) 316: #set($gamePosActive = true) 317: #else 318: #if($showMinutesTab && $pos.equals($minutesPos)) 319: #set($minutesPosActive = true) 320: #elseif($pos.equals($firstCategoryPos)) 321: #set($seasonPosActive = true) 322: #end 323: #set($seasonPosActive = true) 324: #end 325: 326: 327: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" data-pos="$pos" data-gamePos="$pos.equals($gamePos)" data-firstCategoryPos="$pos.equals($firstCategoryPos)" data-minutesPos="$pos.equals($minutesPos)" id="teaminfo-tabs-secondary-minutes" role="tablist"> 328: #printSubTab($gamePosActive, "${url}?view=lineup&r=${r}&pos=${gamePos}", "Game", "#lineup-${restrictionLabel}-game") 329: #printSubTab($seasonPosActive, "${url}?view=lineup&r=${r}&pos=${firstCategoryPos}", "Season", "#lineup-${restrictionLabel}-season") 330: #if ($showMinutesTab) 331: #printSubTab($minutesPosActive, "${url}?view=lineup&r=${r}&pos=${minutesPos}", "Minutes", "#lineup-${restrictionLabel}-minutes") 332: #end 333: </ul> 334: </div> 335: <div class="tab-content p-3"> 336: #printBriefCategories($r) 337: </div> 338: </div> 339: #end 340: #end ## printSeasonGameMinutesTabs 341: 342: #macro (printLineupTabs) 343: <div class="tab-container"> 344: <div class="tab-nav"> 345: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs-secondary-lineup" role="tablist"> 346: #printSubTab(true, "${url}?view=lineup&r=0&pos=${pos}", "Overall", "#lineup-overall-pane") 347: #if ($showConf) 348: #printSubTab(false, "${url}?view=lineup&r=1&pos=${pos}", "Conference", "#lineup-conf-pane") 349: #end 350: </ul> 351: </div> 352: <div class="tab-content p-3"> 353: <div class="tab-pane active" id="lineup-overall-pane" role="tabpanel"> 354: #if ($briefsCategoriesLabels.containsKey("Game")) 355: #printSeasonGameMinutesTabs(0) 356: #else 357: #printBriefCategories(0) 358: #end 359: </div> 360: #if ($showConf) 361: <div class="tab-pane" id="lineup-conf-pane" role="tabpanel"> 362: #if ($briefsCategoriesLabels.containsKey("Game")) 363: #printSeasonGameMinutesTabs(1) 364: #else 365: #printBriefCategories(1) 366: #end 367: </div> 368: #end 369: </div> 370: </div> 371: #end ## printLineupTabs 372: 373: #set($statClass = "flex-fill text-center border-bottom border-end p-3 col-3 col-lg-auto") 374: #macro (printStat $label $val $fmt) 375: <li class="$statClass" data-val="$val" data-format="$fmt"> 376: <div class="d-flex flex-column justify-content-center align-items-center h-100"> 377: <div class="small text-uppercase text-muted">$label</div> 378: <div class="fs-4 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, $fmt)</div> 379: </div> 380: </li> 381: #end 382: 383: #macro (printStatGraph $label $val $fmt) 384: <li class="$statClass" data-val="$val" data-format="$fmt"> 385: <div class="d-flex flex-column justify-content-center align-items-center h-100 proj-progress-card"> 386: <div class="small text-uppercase text-muted">$label</div> 387: <div class="fs-4 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, $fmt)</div> 388: #set ($percent = $tool.math.mul($val, 100)) 389: <div class="progress mt-2 w-100"> 390: <div class="progress-bar bg-primary" role="progressbar" style="width: $formatter.formatNumber($percent, 1)%;" aria-valuenow="$formatter.formatNumber($percent, 1)" aria-valuemin="0" aria-valuemax="100"></div> 391: </div> 392: </div> 393: </li> 394: #end 395: 396: #macro (printHighlights) 397: #if ($highlights) 398: <ul class="team-stats my-3 list-unstyled d-flex flex-wrap justify-content-center align-items-stretch border-top border-start"> 399: #foreach ($highlight in $highlights.keySet()) 400: #set ($value = "-") 401: #set ($value = $stats.get($highlight)) 402: #set ($value = $tool.math.toInteger($value.replace('-', '0'))) 403: #if($formats.get($highlight).equals("#.000") || $formats.get($highlight).equals(".000")) 404: #printStatGraph("$!highlights.get($highlight).replace('-per game', '/g').replace('per game', '')", $!value, $formats.get($highlight)) 405: #else 406: #printStat("$!highlights.get($highlight).replace('-per game', '/g').replace('per game', '')", $!value, $formats.get($highlight)) 407: #end 408: 409: #end 410: </ul> 411: #end 412: 413: #end ## macro printHighlights 414: #macro (gamelogData $p) 415: 416: #set ($gamelogStats = $gamelogs.get($p)) 417: 418: <table class="table table-hover"> 419: <thead class="thead-dark"> 420: <tr> 421: #printTableHeader("Date", "w-1 text-start") 422: #printTableHeader("Opponent", "") 423: #printTableHeader("Score", "text-center") 424: #foreach ($gamelog in $gamelogStats) 425: #printTableHeader($gamelog, "text-center") 426: #end 427: </tr> 428: </thead> 429: #foreach ($event in $events) 430: <tr> 431: <td class="text-nowrap text-start"> 432: $formatter.formatDate($event.event.date, "MMM d") 433: #if (!$event.event.overall) 434: #set ($atLeastOneNotOverall = true) # 435: #end 436: </td> 437: <td class="text-nowrap"> 438: #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end 439: $event.event.opponent.name 440: </td> 441: <td class="text-nowrap text-center"> 442: #if ($event.event.statusCode >= 0) 443: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0) 444: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a> 445: #else 446: ${event.event.APResult} 447: #end 448: #else 449: #end 450: </td> 451: #foreach ($gamelog in $gamelogStats.keySet()) 452: #set ($value = "-") 453: #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog))) 454: <td class="text-center text-nowrap">$value</td> 455: #end 456: </tr> 457: #end 458: </table> 459: #end ## gamelogData 460: 461: #macro (printRecentGames) 462: <table class="table table-hover"> 463: <thead class="thead-dark"> 464: <tr> 465: #printTableHeader("Date", "w-1 text-start") 466: #printTableHeader("Opponent", "") 467: #printTableHeader("Result", " text-center") 468: </tr> 469: </thead> 470: 471: #set ($eventEnd = -1) 472: #foreach ($event in $events) 473: #if ($event.event.result.resolved) 474: #set ($eventEnd = $velocityCount) 475: #end 476: #end 477: 478: #set ($eventStart = $eventEnd - 5) 479: #if ($eventStart < 0) #set ($eventStart = 0) #end 480: 481: #foreach ($event in $events) 482: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd) 483: <tr> 484: <td class="text-nowrap text-start"><span class="date">$formatter.formatDate($event.event.date, "MMM d")</span></td> 485: <td> 486: #if ($event.event.neutralSite.length() > 0) vs. 487: #elseif (!$event.event.home) at 488: #else ## nothing for a home game 489: #end 490: $event.event.opponent.name 491: </td> 492: <td class="text-center"> 493: #if ($event.event.statusCode >= 0) 494: ## FORMATTED RESULT 495: #set ($formattedResult = "") 496: 497: #if ($resultFormat.equals("AP1")) 498: #set ($formattedResult = $event.event.APResult) 499: #elseif ($resultFormat.equals("AP2")) 500: #set ($formattedResult = $event.event.AP2Result) 501: #end 502: 503: #if ($formattedResult.startsWith("W, ")) 504: #set ($formattedResult = $formattedResult.replace("W, ", '<span class="winner event-winner">W</span>, ')) 505: #elseif ($formattedResult.startsWith("L, ")) 506: #set ($formattedResult = $formattedResult.replace("L, ", '<span class="loser event-loser">L</span>, ')) 507: #end 508: 509: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0) 510: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${formattedResult}</a> 511: #else 512: ${formattedResult} 513: #end 514: #end 515: </td> 516: </tr> 517: #end 518: #end 519: </table> 520: #end ## printRecentGames 521: 522: #macro (splitTeamNetwork $statPosBriefs $label $stats) 523: <tr> 524: <th scope="row" class="font-weight-normal text-end">${label}</th> 525: #foreach ($brief in $statPosBriefs.keySet()) 526: #set ($value = "-") 527: #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief))) 528: <td class="text-center text-nowrap">#if ($value.length() > 0) $value #else - #end</td> 529: #end 530: </tr> 531: #end ## split 532: 533: #macro (splitsTeamNetworkData $p) 534: #set ($statPosBriefs = $briefs.get($p)) 535: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1)) 536: 537: #if ($statPosBriefs.size() > 0) 538: <table class="table table-hover"> 539: <thead class="thead-dark"> 540: <tr> 541: <th class="text-uppercase" aria-label="Title"> </th> 542: #foreach ($brief in $statPosBriefs) 543: #printTableHeader($brief, "text-center") 544: #end 545: </tr> 546: </thead> 547: #splitTeamNetwork($statPosBriefs, "Total", $splits.overall) 548: #if ($showConf) 549: #splitTeamNetwork($statPosBriefs, "Conference", $splits.conference) 550: #splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition) 551: #else 552: #splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition) 553: #end ## hide overall/conf 554: 555: <tr class="bg-transparent"> 556: <td colspan="$colspan"> </td> 557: </tr> 558: 559: #splitTeamNetwork($statPosBriefs, "Home", $splits.home) 560: #splitTeamNetwork($statPosBriefs, "Away", $splits.away) 561: #splitTeamNetwork($statPosBriefs, "Neutral", $splits.neutral) 562: 563: <tr class="bg-transparent"> 564: <td colspan="$colspan"> </td> 565: </tr> 566: 567: #foreach($gameResult in $gamesResults.entrySet()) 568: #if ($gameResult.key == "wins") 569: #set ($splitGameResult = $splits.inWins) 570: #elseif ($gameResult.key == "losses") 571: #set ($splitGameResult = $splits.inLosses) 572: #elseif ($gameResult.key == "ties") 573: #set ($splitGameResult = $splits.inTies) 574: #end 575: 576: #splitTeamNetwork($statPosBriefs, $gameResult.value, $splitGameResult) 577: #end 578: 579: <tr class="bg-transparent"> 580: <td colspan="$colspan"> </td> 581: </tr> 582: 583: #if ($monthsPlayed and $monthsPlayed.size() > 0) 584: #foreach($month in $monthsPlayed) 585: #if ($month == 'January') 586: #set ($splitMonth = $splits.january) 587: #elseif ($month == 'February') 588: #set ($splitMonth = $splits.february) 589: #elseif ($month == 'March') 590: #set($splitMonth = $splits.march) 591: #elseif ($month == 'April') 592: #set($splitMonth = $splits.april) 593: #elseif ($month == 'May') 594: #set ($splitMonth = $splits.may) 595: #elseif ($month == 'June') 596: #set ($splitMonth = $splits.june) 597: #elseif ($month == 'July') 598: #set($splitMonth = $splits.july) 599: #elseif ($month == 'August') 600: #set ($splitMonth = $splits.august) 601: #elseif ($month == 'September') 602: #set($splitMonth = $splits.september) 603: #elseif ($month == 'October') 604: #set($splitMonth = $splits.october) 605: #elseif ($month == 'November') 606: #set ($splitMonth = $splits.november) 607: #elseif ($month == 'December') 608: #set($splitMonth = $splits.december) 609: #end 610: 611: #splitTeamNetwork($statPosBriefs, $month, $splitMonth) 612: #end ## foreach 613: #end 614: </table> 615: #end 616: #end ## splitsTeamNetworkData 617: 618: #macro (printAttendance) 619: #if ($showAttendance) 620: <table class="table table-hover"> 621: <thead class="thead-dark"> 622: <tr> 623: #printTableHeader("Date", "w-1 text-start") 624: #printTableHeader("Opponent", "") 625: #printTableHeader("Score", "text-center") 626: #printTableHeader("Attend", "text-center") 627: </tr> 628: </thead> 629: #set ($counter = 0) 630: #foreach ($event in $events) 631: <tr> 632: <td class="text-nowrap text-start">$formatter.formatDate($event.event.date, "MMM d")</td> 633: <td class="text-nowrap"> 634: #if ($event.event.neutralSite.length() > 0) vs. 635: #elseif (!$event.event.home) at 636: #else ## nothing for a home game 637: #end 638: $event.event.opponent.name 639: </td> 640: <td class="text-nowrap text-center"> 641: #if ($event.event.statusCode >= 0) 642: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0) 643: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a> 644: #else 645: ${event.event.result} 646: #end 647: #else #end 648: </td> 649: <td class="text-nowrap text-center"> 650: #set ($value = "-") 651: #set ($value = $!formatter.formatNumber($event.stats.get('at'), $formats.get('at'))) 652: #if ($value.length() > 0) $value #else - #end 653: </td> 654: </tr> 655: #end 656: </table> 657: #end ## showAttendance 658: #end 659: 660: #macro (printTab $viewParam $label) 661: #set ($classAttr = "nav-link text-nowrap text-center") 662: #if ($viewParam == $view) 663: #set ($classAttr = "${classAttr} active") 664: #end 665: <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0"> 666: <a href="${page.url}?view=${viewParam}" class="$classAttr" role="tab" data-bs-toggle="tab" data-bs-target="#${viewParam}" aria-controls="$viewParam">$label</a> 667: </li> 668: #end 669: 670: #macro (printSubTab $active $url $label $target) 671: <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0"> 672: <a class="nav-link text-nowrap text-center #if ($active) active #end" href="$url" role="tab" data-bs-toggle="tab" data-bs-target="$target">$label</a> 673: </li> 674: #end 675: 676: #macro (printPaneAttrs $viewParam) 677: #set ($classAttr = "tab-pane") 678: #if ($viewParam == $view) 679: #set ($classAttr = "tab-pane active") 680: #else 681: #set ($classAttr = "${classAttr} fade") 682: #end 683: 684: class="$classAttr" role="tabpanel" id="$viewParam" 685: #end 686: 687: #macro (printCoachViewUrl) 688: #set ($coachViewUrl = "${page.url}?tmpl=teaminfo-network-monospace-template") 689: #set ($enumCode = $sport.enumCode) 690: 691: #if ($enumCode == 2) 692: #set ($coachViewUrl = "${coachViewUrl}&sort=ptspg") 693: #elseif ($enumCode == 1 || $enumCode == 11) 694: #set ($coachViewUrl = "${coachViewUrl}&sort=ab&pos=h") 695: #end 696: 697: #if ($enumCode == 7 || $enumCode == 8 || $enumCode > 11) #else 698: <li class="nav-item" data-skip="true"><a href="$coachViewUrl" target="_blank" class="nav-link text-nowrap text-center">Coach's View</a></li> 699: #end 700: #end 701: 702: #macro (printTabs) 703: $request.setAttribute("icl-responsive-tabs-script", true) 704: 705: <div class="tab-nav"> 706: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs" role="tablist"> 707: #printTab("profile", "Team Profile") 708: 709: #if ($showRoster) 710: #printTab("roster", "Roster") 711: #end 712: 713: #printTab("lineup", "Lineup") 714: #printTab("gamelog", "Game Log") 715: #printTab("splits", "Split Stats") 716: 717: #if ($showAttendance) 718: #printTab("attendance", "Attendance") 719: #end 720: 721: #printCoachViewUrl 722: </ul> 723: </div> 724: #end ## printTabs 725: 726: #macro (printFilters) 727: <div class="p-3 border my-3 d-print-none"> 728: <div class="btn-toolbar d-flex justify-content-between gap-3 flex-column flex-sm-row flex-sm-nowrap" role="toolbar" aria-label="Standings tool bar"> 729: <div class="flex-fill"> 730: <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row"> 731: $!request.setAttribute("pageObj", $page) 732: $website.includeAgain("conf-season-filter-template") 733: </div> 734: </div> 735: <div class="" role="group" aria-label="Print friendly version"> 736: <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a> 737: </div> 738: </div> 739: </div> 740: #end ## printFilters 741: ############ END MACROS ############# 742: 743: #set ($pageTitle = $page.title) 744: #if($pageTitle.trim().length() == 0) 745: #set($pageTitle = $page.sectionPage.getTitle()) 746: #end 747: 748: #if ($pageTitle.trim().length() == 0) 749: #set ($season = "") 750: #if ($page.url.matches(".*/\d{4}-\d{2}/.*")) 751: #set ($truncateStr = $page.url.split("/\d{4}-\d{2}/").get(0)) 752: #set ($season = $page.url.replace($truncateStr, "").substring(1, 8)) 753: #end 754: 755: #set ($gender = "") 756: #if ($sport.enumCode == 6 or $sport.enumCode == 10) 757: #else 758: #if ($page.url.matches(".*/sports/m.*") || $page.url.matches(".*/sports/m-*")) 759: ##set ($gender = "Men's") 760: #elseif ($page.url.matches(".*/sports/w.*") || $page.url.matches(".*/sports/w-*")) 761: ##set ($gender = "Women's") 762: #end 763: #end 764: 765: #set ($pageTitle = "${season} ${gender} ${sport} Statistics") 766: 767: #end 768: 769: #if ($attributes.get("school_name").length() > 0) 770: #set ($pageTitle = "${pageTitle} - ${attributes.get('school_name')}") 771: #end 772: 773: $!request.setAttribute("pageTitle", "${pageTitle}") 774: 775: <head><title>$pageTitle</title></head> 776: 777: 778: <div class="page-content team-stats"> 779: 780: <h1>$pageTitle</h1> 781: 782: #printFilters 783: 784: ## TEAM HIGHLIGHT STATS 785: <div class="my-3">#printHighlights</div> 786: 787: ## TABS 788: <div class="tabs-container my-3"> 789: #printTabs 790: 791: <div class="tab-content p-3 border border-top-0"> 792: 793: ## TEAM PROFILE 794: <div #printPaneAttrs("profile")> 795: 796: <div class="row"> 797: <div class="col-lg"> 798: <div class="mb-3"> 799: <h5>Team Summary</h5> 800: <div class="stats-container table-responsive"> 801: $website.include("${page.sectionPage.sectionPage.url}/schedule?teamId=${teamId}&tmpl=schedule-data-template") 802: </div> 803: </div> 804: <div class="mb-3"> 805: <h5>Recent Results</h5> 806: <div class="stats-container table-responsive">#printRecentGames</div> 807: </div> 808: </div> 809: <div class="col-lg"> 810: <div class="mb-3"> 811: <h5>Team Stats</h5> 812: <div class="stats-container table-responsive"> 813: $website.include("${page.sectionPage.url}/teams?tmpl=stats-teams-rank-template&rank=${teamId}") 814: </div> 815: </div> 816: </div> 817: </div> 818: </div> ## team profile 819: 820: ## ROSTER 821: #if ($showRoster) 822: <div #printPaneAttrs("roster")> 823: $website.includeAgain("../players?teamId=${teamId}&view=roster&tmpl=stats-bios-template") 824: </div> 825: #end 826: 827: ## LINEUP 828: <div #printPaneAttrs("lineup")> 829: ## start of overall/conference 830: #set ($url = $request.requestURI) 831: #printLineupTabs() 832: 833: Download roster: 834: <a href="../players?teamId=${attributes.teamId}&view=ext">${rosterExtension} (First Last) </a> | 835: <a href="../players?teamId=${attributes.teamId}&view=ext&type=lf"> ${rosterExtension} (Last, First)</a> 836: #if ($rosterExtraExtension) 837: <a href="../players?teamId=${attributes.teamId}&view=exte">${rosterExtraExtension} (First Last)</a> | 838: <a href="../players?teamId=${attributes.teamId}&view=exte&type=lf">${rosterExtraExtension} (Last, First)</a> 839: #end 840: </div> ## lineup 841: 842: ## GAMELOG 843: <div #printPaneAttrs("gamelog")> 844: <div class="stats-container table-responsive"> 845: #if ($gamelogsCategoriesLabels && $gamelogsCategoriesLabels.size() > 1) 846: #printCategories($gamelogsCategoriesLabels, 'gamelog') 847: #else 848: #gamelogData($pos) 849: #end 850: </div> 851: </div> 852: 853: ## SPLITS 854: <div #printPaneAttrs("splits")> 855: <div class="stats-container table-responsive"> 856: #if ($briefsTeamCategoriesLabels && $briefsTeamCategoriesLabels.size() > 1) 857: #printCategories($briefsTeamCategoriesLabels, 'splits') 858: #else 859: #splitsTeamNetworkData($pos) 860: #end 861: </div> 862: </div> ## splits 863: 864: ## ATTENDANCE 865: <div #printPaneAttrs("attendance")> 866: <div class="stats-container table-responsive">#printAttendance</div> 867: </div> 868: </div> ## tab-content 869: </div> ## tab-container 870: </div> ## stats-container 871: $wiki.su |