
Height: | 5-5 |
Bats/Throws: | R/R |
Year: | Sr. |
Hometown: | Harrington, Del. |
High School: | Polytech |
Position: | OF/C |
Bats/Throws: | R/R |
2019 (Junior): Appeared in 32 games for the wolverines… selected 1st Team ALL AEC… Tallied 31 hits including nine doubles and one triple…Totaled six home runs on the season…Registered a .378 batting average…Drove in 25 runs and drew 18 walks…Fastpitch News National Player of the week… ranked 3rd in slugging percentage in the AEC, 3rd in OBP in the AEC, 10th in RBI’s in the AEC, 8th in doubles in the AEC, 3rd in HR’s in the AEC, and 2nd in walks in the AEC.
2018 (Sophomore): Appeared in 26 games in her first season as a Wolverine…Selected to the All-Capital Athletic Conference (CAC) First Team…Second on the team in hits (32) and batting average (.405)…Led the team in slugging percentage (.759), home runs (6) and runs batted in (29)…Drove in a season-high four runs in a victory over Clarks Summit on March 16.
High School: Played Softball (Bradshaw)
Personal: Daughter of Donald and Charlene...Has one sister, Brie
Recent Games | ||
---|---|---|
Mar 4 | vs. East. Mennonite | W, 9-0 |
Mar 4 | vs. Otterbein | T, 0-0 |
Mar 6 | vs. Wilkes | W, 3-1 |
Mar 6 | vs. Waynesburg | W, 4-2 |
Mar 11 | Stevenson | L, 6-4 |
Mar 11 | Stevenson | W, 7-3 |
Statistics category | Overall | Conf | ||
---|---|---|---|---|
Games | 16 | - | ||
Plate appearances | 53 | 0 | ||
At Bats | 43 | - | ||
Runs | 12 | - | ||
Hits | 18 | - | ||
Doubles | 3 | - | ||
Triples | 4 | - | ||
Home Runs | 3 | - | ||
Runs Batted In | 21 | - | ||
Total bases | 38 | 0 | ||
Walks | 9 | - | ||
Hit by pitch | 0 | - | ||
Strikeouts | 5 | - | ||
Sacrifice Flies | 0 | - | ||
Sacrifice Hits | 1 | - | ||
Hit into double play | - | - | ||
Stolen Bases | 2 | - | ||
Caught Stealing | 0 | - | ||
Batting Average | .419 | - | ||
On Base Percentage | .519 | - | ||
Slugging Percentage | .884 | - | ||
Appearances | 0 | - | ||
Games started | 0 | - | ||
Wins | 0 | - | ||
Losses | 0 | - | ||
Saves | 0 | - | ||
Complete Games | - | - | ||
Shutouts | - | - | ||
Innings Pitched | 0.0 | 0.0 | ||
Hits | - | - | ||
Runs | - | - | ||
Earned Runs | - | - | ||
Walks | - | - | ||
Strikeouts | - | - | ||
Strikeouts per Game | .00 | .00 | ||
Doubles Allowed | - | - | ||
Triples Allowed | - | - | ||
Home Runs Allows | - | - | ||
At Bats Against | - | - | ||
Batting Average Against | - | - | ||
Earned Run Average | 0.00 | 0.00 | ||
Wild pitches | - | - | ||
Hit Batters | - | - | ||
Balks | - | - | ||
Sacrifice Flies Allowed | - | - | ||
Sacrifice Hits Allowed | - | - | ||
Total Chances | 61 | 0 | ||
Put Outs | 58 | - | ||
Assists | 2 | - | ||
Errors | 1 | - | ||
Fielding Percentage | .984 | - | ||
Double Plays | 3 | - | ||
Stolen Bases Allowed | 0 | - | ||
Runners Caught Stealing | 0 | - | ||
Runners Caught Stealing Percentage | - | - | ||
Passed Balls | 0 | - | ||
Catcher's Interference | 0 | - |
Date | Opponent | Score | ab | r | h | 2b | 3b | hr | rbi | bb | k | sb | cs |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Feb 16 | Keystone | W, 9-0 | 3 | 1 | 1 | - | 1 | - | 3 | 1 | - | 1 | - |
Feb 16 | Keystone | W, 5-2 | 4 | 1 | 1 | - | - | 1 | 3 | - | 1 | - | - |
Feb 22 | at Washington College | W, 9-0 | 1 | 2 | 0 | - | - | - | 0 | 3 | - | - | - |
Feb 22 | at Washington College | L, 9-0 | 2 | 0 | 0 | - | - | - | 0 | - | - | - | - |
Feb 23 | Swarthmore | L, 10-8 | 2 | 0 | 1 | - | - | - | 0 | - | - | - | - |
Feb 23 | Swarthmore | L, 9-8 | 4 | 1 | 3 | 2 | - | - | 3 | 1 | - | - | - |
Mar 1 | vs. Hilbert | W, 8-0 | 2 | 0 | 2 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Mar 2 | vs. Muhlenberg | W, 8-0 | 4 | 0 | 1 | - | - | - | 0 | - | 1 | - | - |
Mar 2 | vs. St. Elizabeth | W, 11-3 | 3 | 2 | 3 | 0 | 1 | 1 | 5 | 0 | 0 | 0 | 0 |
Mar 3 | vs. St. Elizabeth | W, 13-0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
Mar 3 | vs. Cedar Crest | W, 1-0 | 2 | 0 | 0 | - | - | - | 0 | - | 2 | - | - |
Mar 4 | vs. East. Mennonite | W, 9-0 | 1 | 2 | 1 | - | - | - | 1 | 2 | - | - | - |
Mar 4 | vs. Otterbein | T, 0-0 | - | - | - | - | - | - | - | - | - | - | - |
Mar 6 | vs. Wilkes | W, 3-1 | 3 | 1 | 2 | - | 1 | - | 1 | - | - | - | - |
Mar 6 | vs. Waynesburg | W, 4-2 | 3 | 0 | 1 | - | - | - | 0 | - | 1 | - | - |
Mar 11 | Stevenson | L, 6-4 | 4 | 0 | 1 | - | - | - | 1 | - | - | - | - |
Mar 11 | Stevenson | W, 7-3 | 3 | 1 | 1 | - | - | 1 | 3 | - | - | - | - |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | - | |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | - |
Date | Opponent | Score | hbp | sf | sh | tb | xbh | hdp | go | fo | go/fo | pa |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Feb 16 | Keystone | W, 9-0 | - | - | - | 3 | 1 | - | 2 | - | - | 4 |
Feb 16 | Keystone | W, 5-2 | - | - | - | 4 | 1 | - | - | 2 | - | 4 |
Feb 22 | at Washington College | W, 9-0 | - | - | - | 0 | 0 | - | - | 1 | - | 4 |
Feb 22 | at Washington College | L, 9-0 | - | - | - | 0 | 0 | - | 1 | 1 | 1.00 | 2 |
Feb 23 | Swarthmore | L, 10-8 | - | - | - | 1 | 0 | - | - | 1 | - | 2 |
Feb 23 | Swarthmore | L, 9-8 | - | - | - | 5 | 2 | - | 1 | - | - | 5 |
Mar 1 | vs. Hilbert | W, 8-0 | 0 | 0 | 0 | 5 | 2 | - | 0 | - | - | 3 |
Mar 2 | vs. Muhlenberg | W, 8-0 | - | - | - | 1 | 0 | - | - | 2 | - | 4 |
Mar 2 | vs. St. Elizabeth | W, 11-3 | 0 | 0 | 1 | 8 | 2 | - | 0 | - | - | 4 |
Mar 3 | vs. St. Elizabeth | W, 13-0 | 0 | 0 | 0 | 0 | 0 | - | 0 | - | - | 3 |
Mar 3 | vs. Cedar Crest | W, 1-0 | - | - | - | 0 | 0 | - | - | - | - | 2 |
Mar 4 | vs. East. Mennonite | W, 9-0 | - | - | - | 1 | 0 | - | - | - | - | 3 |
Mar 4 | vs. Otterbein | T, 0-0 | - | - | - | - | - | - | - | - | - | - |
Mar 6 | vs. Wilkes | W, 3-1 | - | - | - | 4 | 1 | - | 1 | - | - | 3 |
Mar 6 | vs. Waynesburg | W, 4-2 | - | - | - | 1 | 0 | - | - | 1 | - | 3 |
Mar 11 | Stevenson | L, 6-4 | - | - | - | 1 | 0 | - | 3 | - | - | 4 |
Mar 11 | Stevenson | W, 7-3 | - | - | - | 4 | 1 | - | - | 2 | - | 3 |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - |
Date | Opponent | Score | gs | w | l | sv | ip | h | r | er | era | bb | k | hr |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Feb 16 | Keystone | W, 9-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Feb 16 | Keystone | W, 5-2 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Feb 22 | at Washington College | W, 9-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Feb 22 | at Washington College | L, 9-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Feb 23 | Swarthmore | L, 10-8 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Feb 23 | Swarthmore | L, 9-8 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 1 | vs. Hilbert | W, 8-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 2 | vs. Muhlenberg | W, 8-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 2 | vs. St. Elizabeth | W, 11-3 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 3 | vs. St. Elizabeth | W, 13-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 3 | vs. Cedar Crest | W, 1-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 4 | vs. East. Mennonite | W, 9-0 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 4 | vs. Otterbein | T, 0-0 | - | - | - | - | - | - | - | - | - | - | - | - |
Mar 6 | vs. Wilkes | W, 3-1 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 6 | vs. Waynesburg | W, 4-2 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 11 | Stevenson | L, 6-4 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 11 | Stevenson | W, 7-3 | 0 | 0 | 0 | 0 | 0.0 | - | - | - | 0.00 | - | - | - |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | - | - |
Date | Opponent | Score | tc | po | a | e | fpct | dp | sba | rcs | rcs% | pb | ci |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Feb 16 | Keystone | W, 9-0 | 5 | 5 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Feb 16 | Keystone | W, 5-2 | 3 | 3 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Feb 22 | at Washington College | W, 9-0 | 7 | 7 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Feb 22 | at Washington College | L, 9-0 | 4 | 4 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Feb 23 | Swarthmore | L, 10-8 | 3 | 2 | 0 | 1 | .667 | - | - | - | - | - | - |
Feb 23 | Swarthmore | L, 9-8 | 11 | 11 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Mar 1 | vs. Hilbert | W, 8-0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | - | 0 | 0 |
Mar 2 | vs. Muhlenberg | W, 8-0 | 3 | 3 | 0 | 0 | 1.000 | 1 | - | - | - | - | - |
Mar 2 | vs. St. Elizabeth | W, 11-3 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | - | 0 | 0 |
Mar 3 | vs. St. Elizabeth | W, 13-0 | 6 | 5 | 1 | 0 | 1.000 | 2 | 0 | 0 | - | 0 | 0 |
Mar 3 | vs. Cedar Crest | W, 1-0 | 0 | 0 | 0 | 0 | - | - | - | - | - | - | - |
Mar 4 | vs. East. Mennonite | W, 9-0 | 6 | 6 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Mar 4 | vs. Otterbein | T, 0-0 | - | - | - | - | - | - | - | - | - | - | - |
Mar 6 | vs. Wilkes | W, 3-1 | 3 | 3 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Mar 6 | vs. Waynesburg | W, 4-2 | 0 | 0 | 0 | 0 | - | - | - | - | - | - | - |
Mar 11 | Stevenson | L, 6-4 | 7 | 6 | 1 | 0 | 1.000 | - | - | - | - | - | - |
Mar 11 | Stevenson | W, 7-3 | 3 | 3 | 0 | 0 | 1.000 | - | - | - | - | - | - |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | - | |
Mar 13 | at Salisbury | - | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | - | |
Mar 17 | at Eastern | - | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | - | |
Mar 21 | Neumann | - | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | - | |
Mar 24 | Penn St.-Harrisburg | - | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | - | |
Mar 28 | at Immaculata | - | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | - | |
Mar 29 | Penn St.-Hazleton | - | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | - | |
Apr 1 | at Rosemont | - | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | - | |
Apr 4 | at Marywood | - | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | - | |
Apr 14 | Cabrini | - | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | - | |
Apr 16 | at Widener | - | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | - | |
Apr 18 | at Gwynedd Mercy | - | - | - | - | - | - | - | - | - | - | - |
g | ab | r | h | 2b | 3b | hr | rbi | bb | k | sb | cs | avg | obp | slg | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Total | 16 | 43 | 12 | 18 | 3 | 4 | 3 | 21 | 9 | 5 | 2 | 0 | .419 | .519 | .884 |
Conference | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
Exhibition | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
- | |||||||||||||||
Home | 6 | 20 | 4 | 8 | 2 | 1 | 2 | 13 | 2 | 1 | 1 | - | .400 | .455 | .900 |
Away | 2 | 3 | 2 | 0 | - | - | - | 0 | 3 | - | - | - | .000 | .500 | .000 |
Neutral | 8 | 20 | 6 | 10 | 1 | 3 | 1 | 8 | 4 | 4 | 1 | 0 | .500 | .583 | 1.000 |
- | |||||||||||||||
Wins | 12 | 31 | 11 | 13 | 1 | 4 | 3 | 17 | 8 | 5 | 2 | 0 | .419 | .538 | 1.000 |
Losses | 4 | 12 | 1 | 5 | 2 | - | - | 4 | 1 | - | - | - | .417 | .462 | .583 |
- | |||||||||||||||
February | 6 | 16 | 5 | 6 | 2 | 1 | 1 | 9 | 5 | 1 | 1 | - | .375 | .524 | .813 |
March | 10 | 27 | 7 | 12 | 1 | 3 | 2 | 12 | 4 | 4 | 1 | 0 | .444 | .516 | .926 |
g | hbp | sf | sh | tb | xbh | hdp | go | fo | go/fo | pa | |
---|---|---|---|---|---|---|---|---|---|---|---|
Total | 16 | 0 | 0 | 1 | 38 | 10 | - | 8 | 10 | 0.80 | 53 |
Conference | - | - | - | - | 0 | 0 | - | - | - | - | 0 |
Exhibition | - | - | - | - | 0 | 0 | - | - | - | - | 0 |
- | |||||||||||
Home | 6 | - | - | - | 18 | 5 | - | 6 | 5 | 1.20 | 22 |
Away | 2 | - | - | - | 0 | 0 | - | 1 | 2 | 0.50 | 6 |
Neutral | 8 | 0 | 0 | 1 | 20 | 5 | - | 1 | 3 | 0.33 | 25 |
- | |||||||||||
Wins | 12 | 0 | 0 | 1 | 31 | 8 | - | 3 | 8 | 0.38 | 40 |
Losses | 4 | - | - | - | 7 | 2 | - | 5 | 2 | 2.50 | 13 |
- | |||||||||||
February | 6 | - | - | - | 13 | 4 | - | 4 | 5 | 0.80 | 21 |
March | 10 | 0 | 0 | 1 | 25 | 6 | - | 4 | 5 | 0.80 | 32 |
app | gs | w | l | sv | cg | ip | h | r | er | bb | k | k/7 | hr | era | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Total | 0 | 0 | 0 | 0 | 0 | - | 0.0 | - | - | - | - | - | .00 | - | 0.00 |
Conference | - | - | - | - | - | - | 0.0 | - | - | - | - | - | .00 | - | 0.00 |
Exhibition | - | - | - | - | - | - | 0.0 | - | - | - | - | - | .00 | - | 0.00 |
- | |||||||||||||||
Home | 0 | 0 | 0 | 0 | 0 | - | 0.0 | - | - | - | - | - | .00 | - | 0.00 |
There was a problem with a Velocity script | |
Page | bio-template |
Error | VM #split: too few arguments to macro. Wanted 5 got 3 at bio-template[line 300, column 1] |
Page source: |
1: $website.addCss($website.cdn("/info/photo-gallery.css")) 2: <script src="${website.cdn("/info/klass.min.js")}"></script> 3: <script src="${website.cdn("/info/code.photoswipe.jquery-3.0.5.min.js")}"></script> 4: <script src="${website.cdn("/info/masonry.pkgd.min.js")}"></script> 5: <script src="${website.cdn("/info/imagesloaded.pkgd.min.js")}"></script> 6: <script src="${website.cdn("/info/photogallery/photogallery.js")}"></script> 7: 8: ## PICK UP OPTIONS 9: $website.include("options") 10: #set ($options = $request.getAttribute("options")) 11: #set ($locale = "en_us") 12: #set ($locale = $options.get("locale")) 13: 14: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE 15: #set ($bioObject = $page.getDataAsObject()) 16: #set ($statsURL = $bioObject.statsURL) 17: 18: #if ($statsURL.length() > 0) 19: $website.includeAgain("${statsURL}?tmpl=bio-stats-template") 20: ## various settings to get the variables set 21: #set ($events = $request.getAttribute("bio_events")) 22: #set ($seasons = $request.getAttribute("bio_seasons")) 23: #set ($career = $request.getAttribute("bio_career")) 24: #set ($labels = $request.getAttribute("bio_labels")) 25: #set ($briefs = $request.getAttribute("bio_briefs")) 26: #set ($gamelogs = $request.getAttribute("bio_gamelogs")) 27: #set ($splits = $request.getAttribute("bio_splits")) 28: #set ($statPosition = $request.getAttribute("bio_position")) 29: #set ($positions = $request.getAttribute("bio_positions")) 30: #set ($playerId = $request.getAttribute("bio_player_id")) 31: #set ($highlights = $request.getAttribute("bio_highlights")) 32: #set ($formats = $request.getAttribute("bio_formats")) 33: #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels")) 34: #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels")) 35: #set ($gamesResults = $request.getAttribute("bio_games_results")) 36: #set ($monthsPlayed = $request.getAttribute("bio_months_played")) 37: #end 38: 39: #set ($pos = "") 40: #set ($pos = $attributes.get("position")) 41: #set ($pos = $statPosition) 42: #set ($posVec = $pos.split("/")) 43: #set ($pos = $posVec[0]) 44: #set ($pos = $pos.toLowerCase()) 45: #set ($statPos = $positions.get($pos)) 46: #set ($paramPos = $request.getParameter("pos")) 47: 48: #set ($playerId = $attributes.get("playerId")) 49: #set ($stats = $splits.overall) 50: #set ($highlights = $highlights.get($statPos)) 51: 52: #set ($showHighlights = true) 53: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false) 54: #set ($showHighlights = false) 55: #end 56: 57: #set ($enhancedLayout = false) 58: #if (($options.get("bio_enhanced_layout") == "yes") || ($request.getParameter("bio_enhanced_layout") == true)) 59: #set ($enhancedLayout = true) 60: $website.addCss($website.cdn("/info/bio-styles-enhanced.css")) 61: #end 62: 63: #set ($showActionShots = true) 64: #if ($options.get("bio_show_action_shots") && $options.get("bio_show_action_shots") == false) 65: #set ($showActionShots = false) 66: #end 67: 68: #set ($actionShotsLimit = 5) 69: #set ($actionShotsLimit = $tool.math.toInteger($options.get("bio_action_shots_limit"))) 70: 71: #set ($showCareer = $wiki.valid() && $seasons) 72: #if ("yes" == $options.get("stats_show_career") && $seasons) 73: #set ($showCareer = true) 74: #end 75: 76: #set ($hasEvents = $events.size() > 0) 77: #set ($hasSynopsis = $synopsis.trim().length() > 0) 78: #set ($htmlStatsURL = "${page.url}-stats") 79: #set ($hasHTMLStats = $website.exists($htmlStatsURL)) 80: #set ($bioBriefURL = "${page.url}-brief") 81: #set ($hasBioBrief = $website.exists("$bioBriefURL")) 82: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1)) 83: #if ($options.get("bio_hide_roster") == true) 84: #set ($showRoster = false) 85: #end 86: 87: #set ($view = "") 88: #if ($hasSynopsis || $hasBioBrief) 89: #set ($view = "bio") 90: #elseif ($statsURL.length() > 0) 91: #set ($view = "profile") 92: #elseif ($hasHTMLStats) 93: #set ($view = "htmlstats") 94: #elseif ($releases.size() > 0) 95: #set ($view = "news") 96: #elseif ($playerPhotos.size() > 0) 97: #set ($view = "photos") 98: #elseif ($playerVideos.size() > 0) 99: #set ($view = "videos") 100: #end 101: 102: #if ($options.get("bio_default_view").length() > 0) 103: #set ($checkView = $options.get("bio_default_view")) 104: #end 105: 106: #if ($request.getParameter("view")) 107: #set ($checkView = $request.getParameter("view")) 108: #end 109: 110: #if ($checkView == "profile" && $statsURL.length() > 0) 111: #set ($view = "profile") 112: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief)) 113: #set ($view = "bio") 114: #elseif ($checkView == "gamelog" && $statsURL.length() > 0) 115: #set ($view = "gamelog") 116: #elseif ($checkView == "career" && $showCareer) 117: #set ($view = "career") 118: #elseif ($checkView == "splits" && $statsURL.length() > 0) 119: #set ($view = "splits") 120: #elseif ($checkView == "htmlstats" && $hasHTMLStats) 121: #set ($view = "htmlstats") 122: #elseif ($checkView == "news" && $releases.size() > 0) 123: #set ($view = "news") 124: #elseif ($checkView == "photos" && $playerPhotos.size() > 0) 125: #set ($view = "photos") 126: #elseif ($checkView == "videos" && $playerVideos.size() > 0) 127: #set ($view = "videos") 128: #end 129: 130: #macro (printResultAriaLabel $event) 131: #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}") 132: #if ($event.neutralSite.length() > 0 || $event.home) 133: #set ($ariaLabel = "${ariaLabel} vs.") 134: #else 135: #set ($ariaLabel = "${ariaLabel} at") 136: #end 137: #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:") 138: #if ($event.neutralSite.length() > 0) 139: #set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:") 140: #end 141: #set ($ariaLabel = "${ariaLabel} Box Score") 142: aria-label="$ariaLabel" 143: #end 144: 145: #macro (printGrid $items $type) 146: <div class="news-layout grid"> 147: <div class="stories"> 148: <ul> 149: #foreach ($item in $items) 150: #if ($item.title.length() > 0) 151: 152: <li class="story ${type}"> 153: <div class="clearfix"> 154: <a href="$item.url" class="title-box"> 155: <span class="thumb"> 156: #if ($item.thumbnailURL) 157: <img src="$website.cdn("/info/images/spacer.gif")" data-src="${item.thumbnailURL}?max_width=300" alt="" class="lazyload" /> 158: #elseif ($item.contentType == "loki/youtube") 159: <img src="$website.cdn("/info/images/spacer.gif")" data-src="http://img.youtube.com/vi/${item.dataAsString}/0.jpg" alt="" class="lazyload" /> 160: #else 161: <img src="$website.cdn("/info/images/spacer.gif")" data-src="/images/setup/thumbnail_default.jpg?max_width=300" alt="" class="lazyload" /> 162: #end 163: </span> 164: <span class="title">$item.title</span> 165: </a> 166: </div> 167: </li> 168: #end 169: #end ## foreach 170: </ul> 171: </div> 172: </div> 173: #end ## ends macro 174: 175: #macro (gamelogData $p) 176: 177: #set ($p = $positions.get($p)) 178: #set ($gamelogs = $gamelogs.get($p)) 179: 180: #if ($hasEvents) 181: <div class="stats-box full clearfix"> 182: <div class="scrollable"> 183: <div> 184: <table> 185: <tr class="thead"> 186: <th class="text">Date</th> 187: <th class="pinned-col text">Opponent</th> 188: <th>Score</th> 189: #foreach ($gamelog in $gamelogs) 190: <th>$gamelog</th> 191: #end 192: </tr> 193: #foreach ($event in $events) 194: <tr> 195: <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td> 196: <td class="pinned-col text"> 197: #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end 198: $event.event.opponent.name 199: </td> 200: <td> 201: #if ($event.event.statusCode >= 0) 202: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0) 203: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a> 204: #else 205: ${event.event.APResult} 206: #end 207: #else #end 208: </td> 209: #foreach ($gamelog in $gamelogs.keySet()) 210: #set ($value = "-") 211: #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog))) 212: <td>$value</td> 213: #end 214: </tr> 215: #end 216: </table> 217: </div> 218: </div> ## scrollable 219: </div> ## stats-box 220: #end 221: 222: #end ## macro gamelogData 223: 224: #macro (split $statPosBriefs $label $stats) 225: <tr> 226: <td class="pinned-col text">${label}</td> 227: #foreach ($brief in $statPosBriefs.keySet()) 228: #set ($value = "-") 229: #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief))) 230: <td>#if ($value.length() > 0) $value #else - #end</td> 231: #end 232: </tr> 233: #end 234: 235: #macro (careerData $p) 236: #set ($p = $positions.get($p)) 237: #set ($statPosBriefs = $briefs.get($p)) 238: 239: <div class="stats-box full clearfix"> 240: <div class="scrollable"> 241: <div> 242: <table> 243: <tr class="thead"> 244: <th class="pinned-col"> </th> 245: #foreach ($brief in $statPosBriefs) 246: <th>$brief</th> 247: #end 248: </tr> 249: 250: #set ($careerTotals = $request.getAttribute("careerTotals")) 251: #set ($careerMap = $request.getAttribute("careerMap")) 252: 253: #foreach ($season in $seasons) 254: ## Check if we did not get stats for this season 255: #if ($careerMap.get($season.seasonName)) 256: #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>") 257: #split($statPosBriefs, $label, $careerMap[$season.seasonName]) 258: #elseif ($wiki.valid()) 259: <tr> 260: <td class="text">${season.seasonName}</td> 261: <td colspan="${statPosBriefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td> 262: </tr> 263: #end 264: #end 265: 266: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall) 267: 268: </table> 269: </div> 270: </div> ## scrollable 271: </div> ## stats-box 272: 273: #end ## macro careerData 274: 275: #macro (splitsData $p) 276: 277: #set ($p = $positions.get($p)) 278: #set ($statPosBriefs = $briefs.get($p)) 279: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1)) 280: 281: #if ($statPosBriefs.size() > 0) 282: <div class="stats-box full clearfix"> 283: <div class="scrollable"> 284: <div> 285: <table> 286: <tr> 287: <th class="pinned-col"> </th> 288: #foreach ($brief in $statPosBriefs) 289: <th>$brief</th> 290: #end 291: </tr> 292: 293: #split($statPosBriefs, "Total", $splits.overall) 294: #split($statPosBriefs, "Conference", $splits.conference) 295: #split($statPosBriefs, "Exhibition", $splits.exhibition) 296: 297: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr> 298: 299: #split($statPosBriefs, "Home", $splits.home) 300: #split($statPosBriefs, "Away", $splits.away) 301: #split($statPosBriefs, "Neutral", $splits.neutral) 302: 303: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr> 304: 305: #foreach($gameResult in $gamesResults.entrySet()) 306: #if ($gameResult.key == "wins") 307: #set ($splitGameResult = $splits.inWins) 308: #elseif ($gameResult.key == "losses") 309: #set ($splitGameResult = $splits.inLosses) 310: #elseif ($gameResult.key == "ties") 311: #set ($splitGameResult = $splits.inTies) 312: #end 313: 314: #split($statPosBriefs, $gameResult.value, $splitGameResult) 315: #end 316: 317: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr> 318: 319: #if ($monthsPlayed and $monthsPlayed.size() > 0) 320: #foreach($month in $monthsPlayed) 321: #if ($month == 'January') 322: #set ($splitMonth = $splits.january) 323: #elseif ($month == 'February') 324: #set ($splitMonth = $splits.february) 325: #elseif ($month == 'March') 326: #set($splitMonth = $splits.march) 327: #elseif ($month == 'April') 328: #set($splitMonth = $splits.april) 329: #elseif ($month == 'May') 330: #set ($splitMonth = $splits.may) 331: #elseif ($month == 'June') 332: #set ($splitMonth = $splits.june) 333: #elseif ($month == 'July') 334: #set($splitMonth = $splits.july) 335: #elseif ($month == 'August') 336: #set ($splitMonth = $splits.august) 337: #elseif ($month == 'September') 338: #set($splitMonth = $splits.september) 339: #elseif ($month == 'October') 340: #set($splitMonth = $splits.october) 341: #elseif ($month == 'November') 342: #set ($splitMonth = $splits.november) 343: #elseif ($month == 'December') 344: #set($splitMonth = $splits.december) 345: #end 346: 347: #split($statPosBriefs, $month, $splitMonth) 348: #end ## foreach 349: #end 350: </table> 351: </div> 352: </div> ## scrollable 353: </div> ## srollable-table 354: #end 355: 356: #end ## macro splitsData 357: 358: #macro (printRecentGames) 359: #if ($hasEvents) 360: <table> 361: <tr class="thead accent-bg"><th colspan="3">Recent Games</th></tr> 362: 363: #set ($eventEnd = -1) 364: #foreach ($event in $events) 365: #if ($event.event.result.resolved) 366: #set ($eventEnd = $velocityCount) 367: #end 368: #end 369: 370: #set ($eventStart = $eventEnd - 5) 371: #if ($eventStart < 0) #set ($eventStart = 0) #end 372: 373: #foreach ($event in $events) 374: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd) 375: <tr> 376: <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td> 377: <td class="text"> 378: #if ($event.event.neutralSite.length() > 0) vs. 379: #elseif (!$event.event.home) at 380: #else ## nothing for a home game 381: #end 382: $event.event.opponent.name 383: </td> 384: <td class="text"> 385: #if ($event.event.statusCode >= 0) 386: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0) 387: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a> 388: #else 389: ${event.event.APResult} 390: #end 391: #end 392: </td> 393: </tr> 394: #end ## if 395: #end 396: </table> 397: #end 398: #end ## macro printRecentGames 399: 400: #macro (printCategories $briefCategoryLabels $v $ariaLabel) 401: 402: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary"> 403: <div class="tab-nav" data-module="jscroll" data-momentum="false"> 404: <div> 405: <ul class="clearfix"> 406: #foreach($briefCat in $briefCategoryLabels.entrySet()) 407: #set ($briefCatLabel = $briefCat.value) 408: #set ($briefCatKey = $briefCat.key) 409: 410: #if ($locale == "en_gb" && $briefCatLabel == "Defense") 411: #set ($briefCatLabel = "Defence") 412: #end 413: 414: <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}" role="button" aria-label="${ariaLabel}: ${briefCatLabel}">$briefCatLabel</a></li> 415: #end 416: </ul> 417: </div> 418: </div> 419: <div class="tab-panels"> 420: #foreach ($briefCat in $briefCategoryLabels.entrySet()) 421: #set ($class = "tab-panel clearfix") 422: #if ($briefCat.key == $activePos) 423: #set ($class = "tab-panel active clearfix") 424: #end 425: <div class="$class"> 426: <div class="stats-wrap clearfix"> 427: #if ($v == "splits") 428: #splitsData($briefCat.key) 429: #elseif ($v == "career") 430: #careerData($briefCat.key) 431: #end 432: </div> 433: </div> 434: #end 435: </div> 436: </div> ## tab-container 437: 438: #end ## macro printCategories 439: 440: #macro (printHeadshot) 441: #if ($enhancedLayout) 442: 443: #if ($headshot.url) 444: <img src="$headshot.url?max_width=300&max_height=400" alt="$fullName" /> 445: #else 446: #if ($website.exists("/images/setup/headshot_default.jpg")) 447: <img src="/images/setup/headshot_default.jpg?max_width=300&max_height=400" alt="$fullName" /> 448: #else 449: <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=300&max_height=400")" alt="$fullName" /> 450: #end 451: #end 452: 453: #else 454: 455: #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span>#end 456: 457: #if ($headshot.url) 458: <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" /> 459: #else 460: #if ($website.exists("/images/setup/headshot_default.jpg")) 461: <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="" /> 462: #else 463: <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=160&max_height=210")" alt="" /> 464: #end 465: #end 466: 467: #end ## ## enhancedLayout check 468: #end ## macro printHeadshot 469: 470: #macro (printBioInfo) 471: #if ($enhancedLayout) 472: 473: <h2 class="player-heading"> 474: #if ($!attributes.get("number").length() > 0)<span class="number accent-bg">$!attributes.get("number")</span>#end 475: <span class="name">$fullName</span> 476: </h2> 477: 478: <ul> 479: #foreach ($i in [1..10]) 480: #set ($stickyKey = "bio_custom${i}_sticky") 481: #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0) 482: <li> 483: <dl> 484: <dt class="label">$options.get($stickyKey): </dt> 485: <dd class="value">$!attributes.get("custom${i}")</dd> 486: </dl> 487: </li> 488: #end 489: #end 490: 491: #foreach ($field in $fields) 492: #if (!$field.key.startsWith("custom")) 493: #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name")) 494: #if ($field.key == "phone1" || $field.key == "phone2") 495: <li> 496: <dl> 497: <dt class="label">Phone: </dt> 498: <dd class="value">$!attributes.get($field.key)</dd> 499: </dl> 500: </li> 501: #elseif ($field.key == "email_address") 502: #set ($emailAdd = $attributes.get($field.key)) 503: <li> 504: <dl> 505: <dt class="label">Email: </dt> 506: <dd class="value"><a href="mailto:${emailAdd}">$emailAdd</a></dd> 507: </dl> 508: </li> 509: #elseif ($field.key == "weight_class") 510: <li> 511: <dl> 512: <dt class="label">Class: </dt> 513: <dd class="value">$!attributes.get($field.key)</dd> 514: </dl> 515: </li> 516: #elseif ($field.key != "position_abbr") 517: <li> 518: <dl> 519: <dt class="label">$field.value: </dt> 520: <dd class="value">$!attributes.get($field.key)</dd> 521: </dl> 522: </li> 523: #end 524: #end 525: #end 526: #end 527: 528: #foreach ($i in [1..10]) 529: #set ($customKey = "bio_custom${i}") 530: #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}")) 531: <li> 532: <dl> 533: <dt class="label">$options.get($customKey): </dt> 534: <dd class="value">$!attributes.get("custom${i}")</dd> 535: </dl> 536: </li> 537: #end 538: #end 539: </ul> 540: 541: #else 542: ## default layout 543: 544: <div class="player-name"> 545: #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span><span class="sep"> - </span>#end 546: <span class="name">$fullName</span> 547: </div> 548: 549: <table role="presentation"> 550: #foreach ($i in [1..10]) 551: #set ($stickyKey = "bio_custom${i}_sticky") 552: #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0) 553: <tr> 554: <td class="label">$options.get($stickyKey): </td> 555: <td class="value">$!attributes.get("custom${i}")</td> 556: </tr> 557: #end 558: #end 559: 560: #foreach ($field in $fields) 561: #if (!$field.key.startsWith("custom")) 562: #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name")) 563: #if ($field.key == "phone1" || $field.key == "phone2") 564: <tr> 565: <td class="label">Phone: </td> 566: <td class="value">$!attributes.get($field.key)</td> 567: </tr> 568: #elseif ($field.key == "email_address") 569: #set ($emailAdd = $attributes.get($field.key)) 570: <tr> 571: <td class="label">Email: </td> 572: <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td> 573: </tr> 574: #elseif ($field.key == "weight_class") 575: <tr> 576: <td class="label">Class: </td> 577: <td class="value">$!attributes.get($field.key)</td> 578: </tr> 579: #elseif ($field.key != "position_abbr") 580: <tr> 581: <td class="label">$field.value: </td> 582: <td class="value">$!attributes.get($field.key)</td> 583: </tr> 584: #end 585: #end 586: #end 587: #end 588: 589: #foreach ($i in [1..10]) 590: #set ($customKey = "bio_custom${i}") 591: #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}")) 592: <tr> 593: <td class="label">$options.get($customKey): </td> 594: <td class="value">$!attributes.get("custom${i}")</td> 595: </tr> 596: #end 597: #end 598: </table> 599: #end ## enhancedLayout check 600: #end ## macro printBioInfo 601: 602: #macro (printActionShots) 603: #if ($showActionShots) 604: ## BANNERS SLIDER 605: #set ($slickSettings = { 606: "autoplay": true, 607: "fade": true, 608: "arrows": false, 609: "slidesToShow": 1, 610: "slidesToScroll": 1, 611: "lazyLoad": "ondemand", 612: "responsive": "none" 613: }) 614: #set ($slickSettings = $slickSettings.toString().replace("=", ":")) 615: <div class="action-shots clearfix"> 616: <div class="slider" data-module="slick-slider-init" data-slick-settings="$slickSettings"> 617: #foreach ($photo in $playerPhotos) 618: #if ($velocityCount <= $actionShotsLimit) 619: #set ($imgAlt = "") 620: #if (!$image.altText.equals($image.title)) 621: #set ($imgAlt = $image.altText) 622: #elseif( $image.title.length() == 0 ) 623: #set ($imgAlt = "Action shot for $page.title image $velocityCount") 624: #end 625: <div class="image"> 626: <img data-lazy="$photo.url" alt="$imgAlt" /> 627: </div> 628: #end 629: #end 630: </div> 631: </div> 632: #end 633: #end ## macro printActionShots 634: 635: #macro (printHighlights) 636: #if ($highlights && $showHighlights) 637: <div class="highlights #if ($enhancedLayout) highlights-bio-enhanced #else highlights-bio #end clearfix"> 638: #foreach ($highlight in $highlights.keySet()) 639: #set ($value = "-") 640: #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight))) 641: <div class="stat clearfix"> 642: <span class="stat-title">$!highlights.get($highlight)</span> 643: <span class="stat-value">$value</span> 644: </div> 645: #end 646: </div> 647: #end 648: #end ## macro printHighlights 649: #macro (printRoster) 650: #if ($enhancedLayout) 651: $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list") 652: #else 653: #if ($page.contentType == "loki/bio") 654: #set ($headlinesFeaturedSize = 0) 655: #foreach ($featuredPage in $page.headlinesFeatured) 656: #if ($featuredPage.contentType == "loki/headlines") 657: #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1) 658: #end 659: #end 660: #if ($headlinesFeaturedSize > 0) 661: <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below."> 662: <option selected="selected">Related Bios</option> 663: #foreach ($featuredPage in $page.headlinesFeatured) 664: #if ($featuredPage.contentType == "loki/headlines") 665: $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template¤t_url=${page.url}") 666: #end 667: #end 668: </select> 669: #end 670: #elseif ($page.contentType == "loki/bio-network") 671: #set ($relatedPlayers = $page.sectionPage.children) 672: #set ($teamNames = {}) 673: #foreach ($relatedPlayer in $relatedPlayers) 674: #if ($relatedPlayer.contentType == "loki/bio-network") 675: #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes()) 676: #set ($teamName = $relatedPlayerObj.get("team")) 677: #if ($teamName.length() > 0) 678: #if (!$teamNames.containsValue($teamName)) 679: $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName) 680: #end 681: #end 682: #end 683: #end 684: 685: <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below."> 686: #foreach ($i in [1..$teamNames.size()]) 687: #if ($teamNames.size() > 1) 688: <optgroup label="$teamNames.get($i)"> 689: #end 690: 691: #foreach ($relatedPlayer in $relatedPlayers) 692: #if ($relatedPlayer.contentType == "loki/bio-network") 693: #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes()) 694: #set ($teamName = $relatedPlayerObj.get("team")) 695: #if ($teamName.length() > 0 && $teamName == $teamNames.get($i)) 696: #set ($playerFirstName = $relatedPlayerObj.get("first_name")) 697: #set ($playerLastName = $relatedPlayerObj.get("last_name")) 698: #if ($page.url == $relatedPlayer.url) 699: <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option> 700: #else 701: <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option> 702: #end 703: #end 704: #end 705: #end 706: 707: #if ($teamNames.size() > 1) 708: </optgroup> 709: #end 710: #end 711: </select> 712: #end 713: #end ## enhancedLayout check 714: #end ## macro printRoster 715: 716: ################################################## END MACROS ############################################################# 717: 718: #if ($attributes.get("full_name").length() > 0) 719: #set ($fullName = $attributes.get("full_name")) 720: #else 721: #set ($firstName = $!attributes.get("first_name")) 722: #set ($lastName = $!attributes.get("last_name")) 723: #set ($fullName = "${firstName} ${lastName}") 724: #end 725: 726: #set ($actionShots = false) 727: #if ($enhancedLayout && $playerPhotos.size() > 0) 728: #set ($actionShots = true) 729: #end 730: 731: #if ($enhancedLayout) 732: #set ($rootClass = "bio-enhanced") 733: #if ($actionShots && $showActionShots) 734: #set ($rootClass = "${rootClass} action") 735: #else 736: #set ($rootClass = "${rootClass} plain") 737: #end 738: #else 739: #set ($rootClass = "bio-wrap") 740: #end 741: 742: ## FULL ROSTER 743: <div class="${rootClass} #if ($highlights) bio-wrap-has-highlights #end clearfix" data-module="stats/responsive-container"> 744: 745: ## RELATED BIOS 746: #if ($showRoster) 747: <div class="related-bios clearfix">#printRoster</div> 748: #end 749: 750: #if ($actionShots) 751: #printActionShots 752: #end 753: 754: <div class="head clearfix"> 755: <div class="clearfix"> 756: 757: <div class="player-about clearfix"> 758: <div class="player-headshot">#printHeadshot</div> 759: <div class="player-info">#printBioInfo</div> 760: </div> 761: 762: #printHighlights 763: 764: </div> 765: </div> ## head 766: 767: #if ($view.length() > 0) 768: <div class="body clearfix"> 769: 770: <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary"> 771: <div class="tab-nav" data-module="jscroll" data-momentum="false"> 772: <div> 773: <ul class="clearfix"> 774: #if ($hasSynopsis || $hasBioBrief) 775: <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li> 776: #end 777: 778: #if ($statsURL.length() > 0) 779: <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li> 780: <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li> 781: #if ($showCareer) 782: <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li> 783: #end 784: <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li> 785: #end 786: 787: #if ($hasHTMLStats) 788: <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li> 789: #end 790: 791: #if ($releases.size() > 0) 792: <li #if ($view == "news") class="active" #end><a href="${page.url}?view=news">News</a></li> 793: #end 794: 795: #if ($playerPhotos.size() > 0) 796: <li #if ($view == "photos") class="active" #end><a href="${page.url}?view=photos">Photos</a></li> 797: #end 798: 799: #if ($playerVideos.size() > 0) 800: <li #if ($view == "videos") class="active" #end><a href="${page.url}?view=videos">Videos</a></li> 801: #end 802: </ul> 803: </div> 804: </div> ## tab-nav 805: 806: <div class="tab-panels clearfix"> 807: 808: ## BIO 809: #if ($hasSynopsis || $hasBioBrief) 810: 811: #set ($class = "tab-panel clearfix") 812: #if ($view == "bio") 813: #set ($class = "tab-panel active clearfix") 814: #end 815: <div class="${class}"> 816: 817: <div class="synopsis clearfix"> 818: #if ($hasSynopsis) 819: $synopsis 820: #elseif ($hasBioBrief) 821: $website.include("$bioBriefURL") 822: #end 823: </div> 824: 825: </div> ## tab-panel 826: #end 827: ## BIO 828: 829: ## STATS 830: #if ($statsURL.length() > 0) 831: 832: ## PROFILE 833: #set ($class = "tab-panel clearfix") 834: #if ($view == "profile") 835: #set ($class = "tab-panel active clearfix") 836: #end 837: <div class="${class}"> 838: <div class="stats-wrap clearfix"> 839: 840: ## LAST SIX GAMES 841: <div class="stats-box half"> 842: #printRecentGames() 843: </div> 844: 845: ## RANKING 846: <div class="stats-box half"> 847: #if ($statPos.length() > 0) 848: $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}") 849: #end 850: </div> 851: 852: </div> ## stats-wrap 853: </div> ## tab-content 854: ## PROFILE 855: 856: ## GAMELOG 857: #set ($class = "tab-panel clearfix") 858: #if ($view == "gamelog") 859: #set ($class = "tab-panel active clearfix") 860: #end 861: 862: #set ($activePos = $statPos) 863: #if ($view == "gamelog" && $paramPos.length() > 0) 864: #if ($positions.get($paramPos).length() > 0) 865: #set ($activePos = $positions.get($paramPos)) 866: #end 867: #end 868: 869: <div class="${class}"> 870: 871: #if ($gamelogsCategoriesLabels) 872: <div class="tab-container clearfix secondary" data-module="stats/tabs" data-type="secondary"> 873: <div class="tab-nav" data-module="jscroll" data-momentum="false"> 874: <div> 875: <ul class="clearfix"> 876: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet()) 877: #set($gamelogsCatLabelVal = $gamelogsCatLabel.value) 878: 879: #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense") 880: #set($gamelogsCatLabelVal = "Defence") 881: #end 882: 883: <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" role="button" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a></li> 884: #end 885: </ul> 886: </div> 887: </div> 888: <div class="tab-panels"> 889: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet()) 890: #set ($class = "tab-panel clearfix") 891: #if ($gamelogsCatLabel.key == $activePos) 892: #set ($class = "tab-panel active clearfix") 893: #end 894: <div class="${class}"> 895: <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div> 896: </div> 897: #end 898: </div> 899: </div> 900: #else 901: <div class="stats-wrap clearfix">#gamelogData($pos)</div> 902: #end 903: 904: </div> ## tab-panel 905: ## GAMELOG 906: 907: 908: ## CAREER 909: #if ($showCareer) 910: 911: #set ($activePos = $statPos) 912: #if ($view == "career" && $paramPos.length() > 0) 913: #if ($positions.get($paramPos).length() > 0) 914: #set ($activePos = $positions.get($paramPos)) 915: #end 916: #end 917: 918: #set ($class = "tab-panel clearfix") 919: #if ($view == "career") 920: #set ($class = "tab-panel active clearfix") 921: #end 922: 923: <div class="${class}"> 924: 925: #if ($briefsCategoriesLabels) 926: #printCategories($briefsCategoriesLabels "career" "Career Stats") 927: #else 928: <div class="stats-wrap clearfix">#careerData($activePos)</div> 929: #end 930: 931: </div> ## tab-panel 932: #end 933: ## CAREER 934: 935: ## SPLITS 936: #set ($class = "tab-panel clearfix") 937: #if ($view == "splits") 938: #set ($class = "tab-panel active clearfix") 939: #end 940: 941: #set ($activePos = $statPos) 942: #if ($view == "splits" && $paramPos.length() > 0) 943: #if ($positions.get($paramPos).length() > 0) 944: #set ($activePos = $positions.get($paramPos)) 945: #end 946: #end 947: 948: <div class="${class}"> 949: 950: #if ($briefsCategoriesLabels) 951: #printCategories($briefsCategoriesLabels "splits" "Splits Stats") 952: #else 953: <div class="stats-wrap clearfix">#splitsData($pos)</div> 954: #end 955: 956: </div> ## tab-panel 957: ## SPLITS 958: 959: #end 960: ## STATS 961: 962: ## HTML STATS 963: #if ($hasHTMLStats) 964: 965: #set ($class = "tab-panel clearfix") 966: #if ($view == "htmlstats") 967: #set ($class = "tab-panel active clearfix") 968: #end 969: <div class="${class}"> 970: <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a> 971: </div> 972: 973: #end 974: ## HTML STATS 975: 976: ## NEWS 977: #if ($releases.size() > 0) 978: #set ($class = "tab-panel clearfix") 979: #if ($view == "news") 980: #set ($class = "tab-panel active clearfix") 981: #end 982: <div class="${class}"> 983: #printGrid($releases, "article") 984: </div> ## tab-content 985: #end 986: ## NEWS 987: 988: ## PHOTOS 989: #if ($playerPhotos.size() > 0) 990: #set ($class = "tab-panel clearfix") 991: #if ($view == "photos") 992: #set ($class = "tab-panel active clearfix") 993: #end 994: <div class="${class}"> 995: $website.includeAgain("${page.url}?tmpl=bio-photos-template") 996: </div> ## tab-content 997: #end 998: ## PHOTOS 999: 1000: ## VIDEOS 1001: #if ($playerVideos.size() > 0) 1002: #set ($class = "tab-panel clearfix") 1003: #if ($view == "videos") 1004: #set ($class = "tab-panel active clearfix") 1005: #end 1006: <div class="${class}"> 1007: #printGrid($playerVideos, "video") 1008: </div> ## tab-content 1009: #end 1010: ## VIDEOS 1011: 1012: </div> ## tab-panels 1013: </div> ## tab-container 1014: </div> ## body 1015: #end 1016: 1017: $wiki 1018: </div> ## ends bio-wrap 1019: 1020: ## GLOBAL ADS SERVER 1021: #if ($website.ads.isAdvertisingEnabled('BIOS')) 1022: $website.includeAgain("global-adserver-slots?adSlot=bios") 1023: #end |