Rebecca Taylor
  • Year:
    Jr.
  • Hometown:
    Greensburg, Pa.
  • High School:
    Greater Latrobe
  • Position:
    P
  • Major:
    Communication Sciences
  • app
    23
  • gs
    9
  • w
    4
  • l
    7
  • sv
    4
  • ip
    75.0
  • era
    3.17
  • k
    38

Pitching Career Highs

  • 7.0 innings pitched (30x)
  • 12 strikeouts (2x)
  • 7.0 scoreless innings pitched (4x)

Batting Career Highs

  • 3 hits (6x)
  • 3 RBI vs. Mount Union on Apr. 2, 2014
  • 3 runs vs. Westminster on March 27, 2014
  • 3 walks vs. Emory on March 15, 2014

2014: Started all 40 games with 31 at first base and nine on the mound…pitched in 23 games overall…earned UAA All-Academic honors for second straight season…finished season on the mound with four wins, a 3.17 ERA, three complete games and a team-high four saves…ranked second on the team with 75 innings pitched…moved into third place on school's all-time wins list and third on innings pitched leaderboard...batted .293 with 18 RBI...went 3-for-3 in a game twice…posted a career-high three RBI in game two of a doubleheader at Mount Union on April 2…scored a career-high three runs in game two versus Westminster on March 27…recorded a career-best three walks in UAA Championship action versus nationally ranked Emory on March 15.

2013: Started all 37 games with 23 as the team’s ace and 14 at first base…named to All-UAA First Team as well as UAA All-Academic squad…posted a 17-10 record with a 3.29 ERA and one save…led the team in wins, innings pitched (151.0), strikeouts (153), complete games (17) and shutouts (3)…ranked first in the UAA in strikeouts for the second season in a row…also ranked second in the UAA in wins and third in innings…153 strikeouts ranked as the second-highest total in school single-season history behind own total of 181 in 2012…moved into second place in school history in career strikeouts and fourth in career wins…matched a career high with 12 strikeouts versus Stevenson on February 24…threw seven shutout innings with 11 Ks and just four hits allowed versus St. Lawrence on March 9…named UAA Pitcher of the Week on April 22…recorded four double-digit strikeout games and threw seven innings 13 times…logged first career save in game two of a doubleheader versus Heidelberg on April 7…offensively, ranked fourth on the team with a .368 batting average to go along with seven doubles and 15 RBI...provided a walk-off single in game two versus Denison on April 6...collected three hits in a game twice and two RBI three times.

2012: Turned in a stellar rookie campaign, starting all 41 games with 39 appearances on the mound…named to All-UAA First Team…led the Spartan pitching staff with a 20-11 record, a 3.07 earned run average, 25 complete games and four shutouts…led the UAA with 196.1 innings pitched and 181 strikeouts…set the program’s single-season record for both strikeouts and wins…named UAA Pitcher of the Week three times on February 27, March 13 and March 26…pitched 21.2 consecutive shutout innings from March 17-27…posted a 1.00 ERA with 17 strikeouts in 14 innings at the National Training Center Games on March 10-11 in Clermont, Florida…tossed seven innings of one-run ball with 10 strikeouts and zero walks in collegiate debut versus Division I Alabama A&M on February 25…posted four double-digit strikeout efforts…recorded career highs of eight innings pitched versus Heidelberg on April 4 and 12 strikeouts versus Plattsburgh State on March 10…also a .295 hitter at the plate with 11 RBI…collected three hits in a game twice and two RBI four times…also named the CWRU Nancy Gray Rookie of the Year.

Personal: Earned four varsity letters at Greater Latrobe Senior High School…named Tribune Review All-Section Pitcher as a junior in 2010…named team MVP in 2009 and 2010…member of the National Honor Society…graduated in top percent of senior class…daughter of Gary and Mary Taylor.

Recent Games
Apr 22 at Baldwin Wallace L, 3-2
Apr 22 at Baldwin Wallace W, 4-3
Apr 24 Otterbein L, 4-3
Apr 24 Otterbein W, 4-1
Apr 27 Heidelberg L, 8-5
Apr 27 Heidelberg L, 5-3
Statistics category Overall Conf
Games 40 8
Plate appearances 137 30
At Bats 116 24
Runs 21 4
Hits 34 6
Doubles 2 -
Triples - -
Home Runs - -
Runs Batted In 18 2
Total bases 36 6
Walks 16 6
Hit by pitch 1 -
Strikeouts 2 2
Sacrifice Flies 3 -
Sacrifice Hits 1 -
Hit into double play - -
Stolen Bases 1 -
Caught Stealing 1 -
Batting Average .293 .250
On Base Percentage .375 .400
Slugging Percentage .310 .250
Appearances 23 7
Games started 9 2
Wins 4 0
Losses 7 3
Saves 4 3
Complete Games 3 -
Shutouts 1 -
Innings Pitched 75.0 21.0
Hits 72 17
Runs 44 10
Earned Runs 34 8
Walks 23 8
Strikeouts 38 6
Strikeouts per Game 3.55 2.00
Doubles Allowed 23 3
Triples Allowed 3 -
Home Runs Allows 8 3
At Bats Against 292 77
Batting Average Against .247 .221
Earned Run Average 3.17 2.67
Wild pitches - -
Hit Batters 8 5
Balks - -
Sacrifice Flies Allowed 2 -
Sacrifice Hits Allowed 8 4
Total Chances 213 38
Put Outs 184 30
Assists 28 8
Errors 1 0
Fielding Percentage .995 1.000
Double Plays 8 -
Stolen Bases Allowed 3 3
Runners Caught Stealing 3 -
Runners Caught Stealing Percentage .500 -
Passed Balls - -
Catcher's Interference - -
Date Opponent Score ab r h 2b 3b hr rbi bb k sb cs
Feb 22 vs. Centre W, 18-2 4 1 2 - - - 2 - - - -
Feb 22 at Emory L, 7-4 3 0 0 - - - 0 - - - -
Feb 23 at Emory L, 7-4 3 1 1 - - - 1 1 - - -
Feb 23 vs. Centre W, 7-5 3 1 3 - - - 1 - - 1 -
Mar 7 vs. Moravian W, 3-2 2 0 1 - - - 0 1 - - -
Mar 7 vs. Marywood W, 7-2 2 1 1 - - - 0 1 - - -
Mar 8 vs. St. Lawrence W, 7-1 4 1 2 - - - 0 - - - -
Mar 8 vs. Cornell College L, 5-4 5 1 2 - - - 0 - - - 1
Mar 11 vs. Brandeis W, 13-1 4 1 1 - - - 0 1 - - -
Mar 12 vs. Washington (Mo.) W, 2-1 2 0 1 - - - 0 - - - -
Mar 12 vs. Rochester (N.Y.) W, 3-0 3 0 2 - - - 1 1 - - -
Mar 13 vs. Emory W, 6-5 3 0 0 - - - 0 - 1 - -
Mar 13 vs. Brandeis L, 12-11 6 1 1 - - - 0 - 1 - -
Mar 14 vs. Washington (Mo.) L, 7-5 2 1 0 - - - 0 1 - - -
Mar 15 vs. Rochester (N.Y.) W, 4-1 3 1 1 - - - 1 - - - -
Mar 15 vs. Emory L, 5-4 1 0 0 - - - 0 3 - - -
Mar 21 at Geneva   - - - - - - - - - - -
Mar 23 vs. Trine L, 5-0 3 0 1 - - - 0 - - - -
Mar 23 vs. Trine L, 10-7 3 0 0 - - - 0 - - - -
Mar 27 at Westminster (Pa.) W, 7-5 4 1 2 - - - 0 - - - -
Mar 27 at Westminster (Pa.) W, 13-0 3 3 2 - - - 2 - - - -
Mar 29 at Wittenberg   - - - - - - - - - - -
Mar 30 at Marietta L, 5-4 3 1 0 - - - 0 - - - -
Mar 30 at Marietta W, 9-5 3 0 1 - - - 1 - - - -
Apr 2 at Mount Union W, 8-1 3 0 0 - - - 0 - - - -
Apr 2 at Mount Union W, 6-3 4 1 2 1 - - 3 - - - -
Apr 5 Wooster W, 14-6 3 2 0 - - - 0 - - - -
Apr 5 Wooster W, 9-1 2 1 0 - - - 0 1 - - -
Apr 6 Thiel W, 7-0 1 0 1 - - - 0 2 - - -
Apr 6 Thiel W, 8-0 3 0 1 - - - 1 - - - -
Apr 12 at Denison L, 6-0 2 0 0 - - - 0 - - - -
Apr 12 at Denison W, 8-0 2 1 0 - - - 0 1 - - -
Apr 14 at Geneva   - - - - - - - - - - -
Apr 15 Allegheny   - - - - - - - - - - -
Apr 19 at Ohio Wesleyan W, 6-5 3 0 0 - - - 0 - - - -
Apr 19 at Ohio Wesleyan L, 10-5 2 0 0 - - - 0 1 - - -
Apr 21 Allegheny W, 6-3 2 0 1 - - - 2 1 - - -
Apr 21 Allegheny W, 9-0 3 1 3 1 - - 2 - - - -
Apr 22 at Baldwin Wallace L, 3-2 3 0 1 - - - 0 - - - -
Apr 22 at Baldwin Wallace W, 4-3 3 0 0 - - - 0 1 - - -
Apr 24 Otterbein L, 4-3 3 0 0 - - - 0 - - - -
Apr 24 Otterbein W, 4-1 1 0 0 - - - 1 - - - -
Apr 27 Heidelberg L, 8-5 4 0 0 - - - 0 - - - -
Apr 27 Heidelberg L, 5-3 3 0 1 - - - 0 - - - -
Apr 28 John Carroll   - - - - - - - - - - -
Date Opponent Score hbp sf sh tb xbh hdp go fo go/fo pa
Feb 22 vs. Centre W, 18-2 - - - 2 0 - 1 - - 4
Feb 22 at Emory L, 7-4 - - - 0 0 - 3 - - 3
Feb 23 at Emory L, 7-4 - - - 1 0 - 1 - - 4
Feb 23 vs. Centre W, 7-5 1 - - 3 0 - - - - 4
Mar 7 vs. Moravian W, 3-2 - - - 1 0 - - 1 - 3
Mar 7 vs. Marywood W, 7-2 - - - 1 0 - - 1 - 3
Mar 8 vs. St. Lawrence W, 7-1 - - - 2 0 - - 1 - 4
Mar 8 vs. Cornell College L, 5-4 - - - 2 0 - - 3 - 5
Mar 11 vs. Brandeis W, 13-1 - - - 1 0 - 2 1 2.00 5
Mar 12 vs. Washington (Mo.) W, 2-1 - - - 1 0 - 1 - - 2
Mar 12 vs. Rochester (N.Y.) W, 3-0 - - - 2 0 - - 1 - 4
Mar 13 vs. Emory W, 6-5 - - - 0 0 - 2 - - 3
Mar 13 vs. Brandeis L, 12-11 - - - 1 0 - 2 2 1.00 6
Mar 14 vs. Washington (Mo.) L, 7-5 - - - 0 0 - - 2 - 3
Mar 15 vs. Rochester (N.Y.) W, 4-1 - - - 1 0 - 1 1 1.00 3
Mar 15 vs. Emory L, 5-4 - - - 0 0 - - 1 - 4
Mar 21 at Geneva   - - - - - - - - - -
Mar 23 vs. Trine L, 5-0 - - - 1 0 - 2 - - 3
Mar 23 vs. Trine L, 10-7 - - - 0 0 - 2 1 2.00 3
Mar 27 at Westminster (Pa.) W, 7-5 - - - 2 0 - 1 - - 4
Mar 27 at Westminster (Pa.) W, 13-0 - - - 2 0 - 1 - - 3
Mar 29 at Wittenberg   - - - - - - - - - -
Mar 30 at Marietta L, 5-4 - - - 0 0 - 2 - - 3
Mar 30 at Marietta W, 9-5 - 1 - 1 0 - - 3 - 4
Apr 2 at Mount Union W, 8-1 - - - 0 0 - - 3 - 3
Apr 2 at Mount Union W, 6-3 - - - 3 1 - - 2 - 4
Apr 5 Wooster W, 14-6 - - - 0 0 - 3 - - 3
Apr 5 Wooster W, 9-1 - - - 0 0 - - 2 - 3
Apr 6 Thiel W, 7-0 - - - 1 0 - - - - 3
Apr 6 Thiel W, 8-0 - 1 - 1 0 - 1 2 0.50 4
Apr 12 at Denison L, 6-0 - - - 0 0 - 2 - - 2
Apr 12 at Denison W, 8-0 - - - 0 0 - 2 - - 3
Apr 14 at Geneva   - - - - - - - - - -
Apr 15 Allegheny   - - - - - - - - - -
Apr 19 at Ohio Wesleyan W, 6-5 - - 1 0 0 - 2 2 1.00 4
Apr 19 at Ohio Wesleyan L, 10-5 - - - 0 0 - - 1 - 3
Apr 21 Allegheny W, 6-3 - - - 1 0 - 1 - - 3
Apr 21 Allegheny W, 9-0 - - - 4 1 - - - - 3
Apr 22 at Baldwin Wallace L, 3-2 - - - 1 0 - - 2 - 3
Apr 22 at Baldwin Wallace W, 4-3 - - - 0 0 - 1 2 0.50 4
Apr 24 Otterbein L, 4-3 - - - 0 0 - 3 - - 3
Apr 24 Otterbein W, 4-1 - 1 - 0 0 - - 2 - 2
Apr 27 Heidelberg L, 8-5 - - - 0 0 - 3 1 3.00 4
Apr 27 Heidelberg L, 5-3 - - - 1 0 - 1 1 1.00 3
Apr 28 John Carroll   - - - - - - - - - -
Date Opponent Score gs w l sv ip h r er era bb k hr
Feb 22 vs. Centre W, 18-2 1 1 0 0 5.0 6 2 2 2.80 1 9 -
Feb 22 at Emory L, 7-4 0 0 0 0 0.0 - - - 0.00 - - -
Feb 23 at Emory L, 7-4 1 0 1 0 4.1 8 7 7 11.95 3 1 -
Feb 23 vs. Centre W, 7-5 0 0 0 0 0.0 - - - 0.00 - - -
Mar 7 vs. Moravian W, 3-2 0 0 0 0 0.0 - - - 0.00 - - -
Mar 7 vs. Marywood W, 7-2 1 1 0 0 7.0 5 2 2 2.00 4 6 -
Mar 8 vs. St. Lawrence W, 7-1 0 0 0 0 0.0 - - - 0.00 - - -
Mar 8 vs. Cornell College L, 5-4 0 0 1 0 5.1 1 2 0 0.00 0 3 -
Mar 11 vs. Brandeis W, 13-1 0 0 0 0 2.0 1 0 0 0.00 0 0 -
Mar 12 vs. Washington (Mo.) W, 2-1 0 0 0 1 1.0 1 0 0 0.00 0 0 -
Mar 12 vs. Rochester (N.Y.) W, 3-0 0 0 0 1 3.0 2 0 0 0.00 2 1 -
Mar 13 vs. Emory W, 6-5 0 0 0 1 1.0 0 0 0 0.00 0 0 -
Mar 13 vs. Brandeis L, 12-11 1 0 1 0 6.0 5 4 2 2.33 1 2 -
Mar 14 vs. Washington (Mo.) L, 7-5 1 0 1 0 5.0 4 5 5 7.00 3 2 3
Mar 15 vs. Rochester (N.Y.) W, 4-1 0 0 0 0 0.0 - - - 0.00 - - -
Mar 15 vs. Emory L, 5-4 0 0 1 0 3.0 4 1 1 2.33 2 1 -
Mar 21 at Geneva   - - - - - - - - - - - -
Mar 23 vs. Trine L, 5-0 0 0 0 0 0.0 - - - 0.00 - - -
Mar 23 vs. Trine L, 10-7 1 0 1 0 2.2 5 4 4 12.73 2 0 3
Mar 27 at Westminster (Pa.) W, 7-5 0 0 0 0 0.0 - - - 0.00 - - -
Mar 27 at Westminster (Pa.) W, 13-0 1 1 0 0 5.0 4 0 0 0.00 2 1 -
Mar 29 at Wittenberg   - - - - - - - - - - - -
Mar 30 at Marietta L, 5-4 0 0 0 0 0.0 - - - 0.00 - - -
Mar 30 at Marietta W, 9-5 1 0 0 0 3.2 7 4 3 6.56 0 3 -
Apr 2 at Mount Union W, 8-1 0 0 0 0 0.0 - - - 0.00 - - -
Apr 2 at Mount Union W, 6-3 1 1 0 0 5.1 6 3 3 4.12 - - 1
Apr 5 Wooster W, 14-6 0 0 0 0 0.0 - - - 0.00 - - -
Apr 5 Wooster W, 9-1 0 0 0 0 0.0 - - - 0.00 - - -
Apr 6 Thiel W, 7-0 0 0 0 0 0.0 - - - 0.00 - - -
Apr 6 Thiel W, 8-0 0 0 0 0 2.0 0 0 0 0.00 0 1 -
Apr 12 at Denison L, 6-0 0 0 0 0 1.0 3 1 1 7.00 - 2 -
Apr 12 at Denison W, 8-0 0 0 0 0 0.0 - - - 0.00 - - -
Apr 14 at Geneva   - - - - - - - - - - - -
Apr 15 Allegheny   - - - - - - - - - - - -
Apr 19 at Ohio Wesleyan W, 6-5 0 0 0 0 3.0 4 3 1 2.33 1 1 -
Apr 19 at Ohio Wesleyan L, 10-5 0 0 0 0 0.0 - - - 0.00 - - -
Apr 21 Allegheny W, 6-3 0 0 0 1 2.0 0 0 0 0.00 1 1 -
Apr 21 Allegheny W, 9-0 0 0 0 0 0.0 - - - 0.00 - - -
Apr 22 at Baldwin Wallace L, 3-2 0 0 1 0 1.1 2 3 0 0.00 0 2 -
Apr 22 at Baldwin Wallace W, 4-3 0 0 0 0 0.0 - - - 0.00 - - -
Apr 24 Otterbein L, 4-3 0 0 0 0 1.0 2 0 0 0.00 1 1 -
Apr 24 Otterbein W, 4-1 0 0 0 0 0.0 - - - 0.00 - - -
Apr 27 Heidelberg L, 8-5 0 0 0 0 3.2 2 3 3 6.56 - 1 1
Apr 27 Heidelberg L, 5-3 0 0 0 0 1.2 0 0 0 0.00 0 0 -
Apr 28 John Carroll   - - - - - - - - - - - -
Date Opponent Score tc po a e fpct dp sba rcs rcs% pb ci
Feb 22 vs. Centre W, 18-2 0 0 0 0 - - - - - - -
Feb 22 at Emory L, 7-4 6 3 3 0 1.000 1 - - - - -
Feb 23 at Emory L, 7-4 3 2 1 0 1.000 - - - - - -
Feb 23 vs. Centre W, 7-5 8 8 0 0 1.000 - - - - - -
Mar 7 vs. Moravian W, 3-2 7 4 2 1 .857 1 - - - - -
Mar 7 vs. Marywood W, 7-2 2 0 2 0 1.000 - - - - - -
Mar 8 vs. St. Lawrence W, 7-1 7 7 0 0 1.000 - - - - - -
Mar 8 vs. Cornell College L, 5-4 5 4 1 0 1.000 - - - - - -
Mar 11 vs. Brandeis W, 13-1 3 3 0 0 1.000 - - - - - -
Mar 12 vs. Washington (Mo.) W, 2-1 6 5 1 0 1.000 - - - - - -
Mar 12 vs. Rochester (N.Y.) W, 3-0 5 4 1 0 1.000 - - - - - -
Mar 13 vs. Emory W, 6-5 7 7 0 0 1.000 - - - - - -
Mar 13 vs. Brandeis L, 12-11 3 2 1 0 1.000 - 1 - - - -
Mar 14 vs. Washington (Mo.) L, 7-5 4 1 3 0 1.000 - 1 - - - -
Mar 15 vs. Rochester (N.Y.) W, 4-1 6 6 0 0 1.000 - - - - - -
Mar 15 vs. Emory L, 5-4 4 2 2 0 1.000 - 1 - - - -
Mar 21 at Geneva   - - - - - - - - - - -
Mar 23 vs. Trine L, 5-0 7 6 1 0 1.000 - - - - - -
Mar 23 vs. Trine L, 10-7 7 6 1 0 1.000 - - - - - -
Mar 27 at Westminster (Pa.) W, 7-5 5 5 0 0 1.000 - - - - - -
Mar 27 at Westminster (Pa.) W, 13-0 4 3 1 0 1.000 - - - - - -
Mar 29 at Wittenberg   - - - - - - - - - - -
Mar 30 at Marietta L, 5-4 6 6 0 0 1.000 - - - - - -
Mar 30 at Marietta W, 9-5 6 5 1 0 1.000 1 - - - - -
Apr 2 at Mount Union W, 8-1 7 6 1 0 1.000 - - - - - -
Apr 2 at Mount Union W, 6-3 2 2 0 0 1.000 - - 1 1.000 - -
Apr 5 Wooster W, 14-6 6 5 1 0 1.000 1 - - - - -
Apr 5 Wooster W, 9-1 6 6 0 0 1.000 1 - - - - -
Apr 6 Thiel W, 7-0 4 4 0 0 1.000 - - - - - -
Apr 6 Thiel W, 8-0 7 5 2 0 1.000 - - - - - -
Apr 12 at Denison L, 6-0 3 3 0 0 1.000 1 - - - - -
Apr 12 at Denison W, 8-0 3 3 0 0 1.000 - - - - - -
Apr 14 at Geneva   - - - - - - - - - - -
Apr 15 Allegheny   - - - - - - - - - - -
Apr 19 at Ohio Wesleyan W, 6-5 5 5 0 0 1.000 - - 1 1.000 - -
Apr 19 at Ohio Wesleyan L, 10-5 10 10 0 0 1.000 - - - - - -
Apr 21 Allegheny W, 6-3 6 6 0 0 1.000 - - - - - -
Apr 21 Allegheny W, 9-0 12 12 0 0 1.000 - - - - - -
Apr 22 at Baldwin Wallace L, 3-2 4 4 0 0 1.000 - - 1 1.000 - -
Apr 22 at Baldwin Wallace W, 4-3 6 6 0 0 1.000 - - - - - -
Apr 24 Otterbein L, 4-3 5 4 1 0 1.000 1 - - - - -
Apr 24 Otterbein W, 4-1 6 6 0 0 1.000 - - - - - -
Apr 27 Heidelberg L, 8-5 4 3 1 0 1.000 1 - - - - -
Apr 27 Heidelberg L, 5-3 6 5 1 0 1.000 - - - - - -
Apr 28 John Carroll   - - - - - - - - - - -

Career Stats - Hitting

  g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
2011-12 41 129 16 38 6 1 - 11 13 4 2 - .295 .357 .357
2012-13 37 114 13 42 7 - - 15 7 5 3 1 .368 .395 .430
2013-14 40 116 21 34 2 - - 18 16 2 1 1 .293 .375 .310
2014-15 43 119 13 43 5 - 1 16 10 4 - 1 .361 .412 .429
Total 161 478 63 157 20 1 1 60 46 15 6 3 .328 .384 .381

Career Stats - Extended Hitting

  g hbp sf sh tb xbh hdp go fo go/fo pa
2011-12 41 - 1 1 46 7 1 40 47 0.85 144
2012-13 37 - 3 2 49 7 1 31 37 0.84 126
2013-14 40 1 3 1 36 2 - 40 38 1.05 137
2014-15 43 1 1 7 51 6 1 36 37 0.97 138
Total 161 2 8 11 182 22 3 147 159 0.92 545

Career Stats - Pitching

  app gs w l sv cg ip h r er bb k k/7 hr era
2011-12 37 29 20 11 2 25 196.1 192 108 86 56 181 6.45 23 3.07
2012-13 30 23 17 10 1 17 151.0 142 79 71 44 153 7.09 23 3.29
2013-14 23 9 4 7 4 3 75.0 72 44 34 23 38 3.55 8 3.17
2014-15 20 15 11 0 1 6 93.1 111 51 47 22 53 3.97 8 3.52
Total 110 76 52 28 8 51 515.2 517 282 238 145 425 5.77 62 3.23

Career Stats - Fielding

  g tc po a e fpct dp sba rcs rcs% pb ci
2011-12 41 126 92 28 6 .952 4 29 8 .216 - -
2012-13 37 159 124 33 2 .987 5 20 10 .333 - -
2013-14 40 213 184 28 1 .995 8 3 3 .500 - -
2014-15 43 195 167 25 3 .985 6 10 3 .231 - -
Total 161 693 567 114 12 .983 23 62 24 .279 - -

Splits Stats - Hitting

    g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
Event Total 40 116 21 34 2 - - 18 16 2 1 1 .293 .375 .310
Conference 8 24 4 6 - - - 2 6 2 - - .250 .400 .250
Exhibition - - - - - - - - - - - - - - -
Location Home 10 25 4 7 1 - - 6 4 - - - .280 .355 .320
Away 14 41 8 9 1 - - 7 4 - - - .220 .283 .244
Neutral 16 50 9 18 - - - 5 8 2 1 1 .360 .458 .360
Result Wins 25 70 16 27 2 - - 17 10 1 1 - .386 .452 .414
Losses 15 46 5 7 - - - 1 6 1 - 1 .152 .250 .152
Month February 4 13 3 6 - - - 4 1 - 1 - .462 .533 .462
March 18 56 12 18 - - - 5 8 2 - 1 .321 .400 .321
April 18 47 6 10 2 - - 9 7 - - - .213 .304 .255

Splits Stats - Extended Hitting

    g hbp sf sh tb xbh hdp go fo go/fo pa
Event Total 40 1 3 1 36 2 - 40 38 1.05 137
Conference 8 - - - 6 0 - 8 8 1.00 30
Exhibition - - - - 0 0 - - - - 0
Location Home 10 - 2 - 8 1 - 12 8 1.50 31
Away 14 - 1 1 10 1 - 15 15 1.00 47
Neutral 16 1 - - 18 0 - 13 15 0.87 59
Result Wins 25 1 3 1 29 2 - 19 24 0.79 85
Losses 15 - - - 7 0 - 21 14 1.50 52
Month February 4 1 - - 6 0 - 5 - - 15
March 18 - 1 - 18 0 - 16 18 0.89 65
April 18 - 2 1 12 2 - 19 20 0.95 57

Splits Stats - Pitching

    app gs w l sv cg ip h r er bb k k/7 hr era
Event Total 23 9 4 7 4 3 75.0 72 44 34 23 38 3.55 8 3.17
Conference 7 2 0 3 3 - 21.0 17 10 8 8 6 2.00 3 2.67
Exhibition - - - - - - 0.0 - - - - - .00 - 0.00
Location Home 5 0 0 0 1 - 10.1 4 3 3 2 4 2.71 1 2.03
Away 7 4 2 2 0 1 23.2 34 21 15 6 10 2.96 1 4.44
Neutral 11 5 2 5 3 2 41.0 34 20 16 15 24 4.10 6 2.73
Result Wins 12 5 4 0 4 3 40.0 36 14 11 11 23 4.02 1 1.93
Losses 11 4 0 7 0 - 35.0 36 30 23 12 15 3.00 7 4.60
Month February 2 2 1 1 0 1 9.1 14 9 9 4 10 7.50 - 6.75
March 12 6 2 5 3 2 44.2 39 22 17 16 19 2.98 6 2.66
April 9 1 1 1 1 - 21.0 19 13 8 3 9 3.00 2 2.67

Splits Stats - Fielding

    g tc po a e fpct dp sba rcs rcs% pb ci
Event Total 40 213 184 28 1 .995 8 3 3 .500 - -
Conference 8 38 30 8 0 1.000 - 3 - - - -
Exhibition - 0 - - - - - - - - - -
Location Home 10 62 56 6 0 1.000 4 - - - - -
Away 14 70 63 7 0 1.000 3 - 3 1.000 - -
Neutral 16 81 65 15 1 .988 1 3 - - - -
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too many arguments to macro. Wanted 3 got 5 at bio-template[line 330, column 21]
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 &nbsp; #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">&nbsp;</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:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
257:   #elseif ($wiki.valid())
258:     <tr>
259:       <td class="text">${season.seasonName}</td>
260:       <td colspan="${statPosBriefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
261:     </tr>
262:   #end
263: #end
264: 
265: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
266: 
267: </table>
268: </div>
269: </div> ## scrollable
270: </div> ## stats-box
271: 
272: #end ## macro careerData
273: 
274: #macro (splitsData $p)
275: 
276: #set ($p = $positions.get($p))
277: #set ($statPosBriefs = $briefs.get($p))
278: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))
279: 
280: #if ($statPosBriefs.size() > 0)
281: <div class="stats-box full clearfix">
282: <div class="scrollable">
283: <div>
284: <table>
285:   <tr>
286:     <th class="pinned-col">&nbsp;</th>
287:     #foreach ($brief in $statPosBriefs)
288:       <th>$brief</th>
289:     #end
290:   </tr>
291: 
292: #split($statPosBriefs, "Total", $splits.overall)
293: #split($statPosBriefs, "Conference", $splits.conference)
294: #split($statPosBriefs, "Exhibition", $splits.exhibition)
295: 
296: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
297: 
298: #split($statPosBriefs, "Home", $splits.home)
299: #split($statPosBriefs, "Away", $splits.away)
300: #split($statPosBriefs, "Neutral", $splits.neutral)
301: 
302: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
303: 
304: #foreach($gameResult in $gamesResults.entrySet())
305:   #if ($gameResult.key == "wins")
306:     #set ($splitGameResult = $splits.inWins)
307:   #elseif ($gameResult.key == "losses")
308:     #set ($splitGameResult = $splits.inLosses)
309:   #elseif ($gameResult.key == "ties")
310:     #set ($splitGameResult = $splits.inTies)
311:   #end
312: 
313:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
314: #end
315: 
316: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
317: 
318: #if ($monthsPlayed and $monthsPlayed.size() > 0)
319:   #foreach($month in $monthsPlayed)
320:     #if ($month == 'January')
321:       #set ($splitMonth = $splits.january)
322:     #elseif ($month == 'February')
323:       #set ($splitMonth = $splits.february)
324:     #elseif ($month == 'March')
325:       #set($splitMonth = $splits.march)
326:     #elseif ($month == 'April')
327:       #set($splitMonth = $splits.april)
328:     #elseif ($month == 'May')
329:       #set ($splitMonth = $splits.may)
330:     #elseif ($month == 'June')
331:       #set ($splitMonth = $splits.june)
332:     #elseif ($month == 'July')
333:       #set($splitMonth = $splits.july)
334:     #elseif ($month == 'August')
335:       #set ($splitMonth = $splits.august)
336:     #elseif ($month == 'September')
337:       #set($splitMonth = $splits.september)
338:     #elseif ($month == 'October')
339:       #set($splitMonth = $splits.october)
340:     #elseif ($month == 'November')
341:       #set ($splitMonth = $splits.november)
342:     #elseif ($month == 'December')
343:       #set($splitMonth = $splits.december)
344:     #end
345: 
346:     #split($statPosBriefs, $month, $splitMonth)
347:   #end ## foreach
348: #end
349: </table>
350: </div>
351: </div> ## scrollable
352: </div> ## srollable-table
353: #end
354: 
355: #end ## macro splitsData
356: 
357: #macro (printRecentGames)
358: #if ($hasEvents)
359: <table>
360:   <tr class="thead accent-bg"><th colspan="3">Recent Games</th></tr>
361: 
362: #set ($eventEnd = -1)
363: #foreach ($event in $events)
364:   #if ($event.event.result.resolved)
365:     #set ($eventEnd = $velocityCount)
366:   #end
367: #end
368: 
369: #set ($eventStart = $eventEnd - 5)
370: #if ($eventStart < 0) #set ($eventStart = 0) #end
371: 
372: #foreach ($event in $events)
373: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
374:   <tr>
375:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
376:     <td class="text">
377:       #if ($event.event.neutralSite.length() > 0) vs.
378:       #elseif (!$event.event.home) at
379:       #else ## nothing for a home game
380:       #end
381:       $event.event.opponent.name
382:     </td>
383:     <td class="text">
384:     #if ($event.event.statusCode >= 0)
385:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
386:           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
387:       #else
388:       ${event.event.APResult}
389:       #end
390: 	#end
391: 	</td>
392:   </tr>
393: #end ## if
394: #end
395: </table>
396: #end
397: #end ## macro printRecentGames
398: 
399: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
400: 
401: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
402: <div class="tab-nav" data-module="jscroll" data-momentum="false">
403: <div>
404: <ul class="clearfix">
405: #foreach($briefCat in $briefCategoryLabels.entrySet())
406:   #set ($briefCatLabel = $briefCat.value)
407:   #set ($briefCatKey = $briefCat.key)
408: 
409:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
410:     #set ($briefCatLabel = "Defence")
411:   #end
412: 
413:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}" role="button" aria-label="${ariaLabel}: ${briefCatLabel}">$briefCatLabel</a></li>
414: #end
415: </ul>
416: </div>
417: </div>
418: <div class="tab-panels">
419: #foreach ($briefCat in $briefCategoryLabels.entrySet())
420:   #set ($class = "tab-panel clearfix")
421:   #if ($briefCat.key == $activePos)
422:     #set ($class = "tab-panel active clearfix")
423:   #end
424:   <div class="$class">
425:     <div class="stats-wrap clearfix">
426:     #if ($v == "splits")
427:       #splitsData($briefCat.key)
428:     #elseif ($v == "career")
429:       #careerData($briefCat.key)
430:     #end
431:     </div>
432:   </div>
433: #end
434: </div>
435: </div> ## tab-container
436: 
437: #end ## macro printCategories
438: 
439: #macro (printHeadshot)
440: #if ($enhancedLayout)
441: 
442:   #if ($headshot.url)
443:     <img src="$headshot.url?max_width=300&max_height=400" alt="$fullName" />
444:   #else
445:     #if ($website.exists("/images/setup/headshot_default.jpg"))
446:       <img src="/images/setup/headshot_default.jpg?max_width=300&max_height=400" alt="$fullName" />
447:     #else
448:       <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=300&max_height=400")" alt="$fullName" />
449:     #end
450:   #end
451: 
452: #else
453: 
454:   #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span>#end
455: 
456:   #if ($headshot.url)
457:     <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" />
458:   #else
459:     #if ($website.exists("/images/setup/headshot_default.jpg"))
460:       <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="" />
461:     #else
462:       <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=160&max_height=210")" alt="" />
463:     #end
464:   #end
465: 
466: #end ## ## enhancedLayout check
467: #end ## macro printHeadshot
468: 
469: #macro (printBioInfo)
470: #if ($enhancedLayout)
471: 
472: <h2 class="player-heading">
473:   #if ($!attributes.get("number").length() > 0)<span class="number accent-bg">$!attributes.get("number")</span>#end
474:   <span class="name">$fullName</span>
475: </h2>
476: 
477: <ul>
478: #foreach ($i in [1..10])
479:   #set ($stickyKey = "bio_custom${i}_sticky")
480:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
481:     <li>
482:       <dl>
483:         <dt class="label">$options.get($stickyKey): </dt>
484:         <dd class="value">$!attributes.get("custom${i}")</dd>
485:       </dl>
486:     </li>
487:   #end
488: #end
489: 
490: #foreach ($field in $fields)
491:   #if (!$field.key.startsWith("custom"))
492:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
493:       #if ($field.key == "phone1" || $field.key == "phone2")
494:         <li>
495:           <dl>
496:             <dt class="label">Phone: </dt>
497:             <dd class="value">$!attributes.get($field.key)</dd>
498:           </dl>
499:         </li>
500:       #elseif ($field.key == "email_address")
501:         #set ($emailAdd = $attributes.get($field.key))
502:         <li>
503:           <dl>
504:             <dt class="label">Email: </dt>
505:             <dd class="value"><a href="mailto:${emailAdd}">$emailAdd</a></dd>
506:           </dl>
507:         </li>
508:       #elseif ($field.key == "weight_class")
509:         <li>
510:           <dl>
511:             <dt class="label">Class: </dt>
512:             <dd class="value">$!attributes.get($field.key)</dd>
513:           </dl>
514:         </li>
515:       #elseif ($field.key != "position_abbr")
516:         <li>
517:           <dl>
518:             <dt class="label">$field.value: </dt>
519:             <dd class="value">$!attributes.get($field.key)</dd>
520:           </dl>
521:         </li>
522:       #end
523:     #end
524:   #end
525: #end
526: 
527: #foreach ($i in [1..10])
528:   #set ($customKey = "bio_custom${i}")
529:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
530:     <li>
531:       <dl>
532:         <dt class="label">$options.get($customKey): </dt>
533:         <dd class="value">$!attributes.get("custom${i}")</dd>
534:       </dl>
535:     </li>
536:   #end
537: #end
538: </ul>
539: 
540: #else
541: ## default layout
542: 
543: <div class="player-name">
544:   #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span><span class="sep"> - </span>#end
545:   <span class="name">$fullName</span>
546: </div>
547: 
548: <table role="presentation">
549: #foreach ($i in [1..10])
550:   #set ($stickyKey = "bio_custom${i}_sticky")
551:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
552:     <tr>
553:       <td class="label">$options.get($stickyKey): </td>
554:       <td class="value">$!attributes.get("custom${i}")</td>
555:     </tr>
556:   #end
557: #end
558: 
559: #foreach ($field in $fields)
560:   #if (!$field.key.startsWith("custom"))
561:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
562:       #if ($field.key == "phone1" || $field.key == "phone2")
563:         <tr>
564:           <td class="label">Phone: </td>
565:           <td class="value">$!attributes.get($field.key)</td>
566:         </tr>
567:       #elseif ($field.key == "email_address")
568:         #set ($emailAdd = $attributes.get($field.key))
569:         <tr>
570:           <td class="label">Email: </td>
571:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
572:         </tr>
573:       #elseif ($field.key == "weight_class")
574:         <tr>
575:           <td class="label">Class: </td>
576:           <td class="value">$!attributes.get($field.key)</td>
577:         </tr>
578:       #elseif ($field.key != "position_abbr")
579:         <tr>
580:           <td class="label">$field.value: </td>
581:           <td class="value">$!attributes.get($field.key)</td>
582:         </tr>
583:       #end
584:     #end
585:   #end
586: #end
587: 
588: #foreach ($i in [1..10])
589:   #set ($customKey = "bio_custom${i}")
590:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
591:     <tr>
592:       <td class="label">$options.get($customKey): </td>
593:       <td class="value">$!attributes.get("custom${i}")</td>
594:     </tr>
595:   #end
596: #end
597: </table>
598: #end ## enhancedLayout check
599: #end ## macro printBioInfo
600: 
601: #macro (printActionShots)
602: #if ($showActionShots)
603: 	## BANNERS SLIDER
604:     #set ($slickSettings = {
605: 		"autoplay": true,
606:         "fade": true,
607:         "arrows": false,
608:         "slidesToShow": 1,
609:         "slidesToScroll": 1,
610:         "lazyLoad": "ondemand",
611:         "responsive": "none"
612:     })
613:     #set ($slickSettings = $slickSettings.toString().replace("=", ":"))
614:     <div class="action-shots clearfix">
615:         <div class="slider" data-module="slick-slider-init" data-slick-settings="$slickSettings">
616:             #foreach ($photo in $playerPhotos)
617: 				#if ($velocityCount <= $actionShotsLimit)
618:     				#set ($imgAlt = "")
619:     				#if (!$image.altText.equals($image.title))
620:     					#set ($imgAlt = $image.altText)
621:     				#elseif( $image.title.length() == 0 )
622:     					#set ($imgAlt = "Action shot for $page.title image $velocityCount")
623:     				#end
624:             		<div class="image">
625:             			<img data-lazy="$photo.url" alt="$imgAlt" />
626:             	    </div>
627: 				#end
628:     	    #end
629: 	    </div>
630:     </div>
631: #end
632: #end ## macro printActionShots
633: 
634: #macro (printHighlights)
635: #if ($highlights && $showHighlights)
636:   <div class="highlights #if ($enhancedLayout) highlights-bio-enhanced #else highlights-bio #end clearfix">
637:     #foreach ($highlight in $highlights.keySet())
638:       #set ($value = "-")
639:       #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
640:       <div class="stat clearfix">
641:         <span class="stat-title">$!highlights.get($highlight)</span>
642:         <span class="stat-value">$value</span>
643:       </div>
644:     #end
645:   </div>
646: #end
647: #end ## macro printHighlights
648: #macro (printRoster)
649: #if ($enhancedLayout)
650:   $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list")
651: #else
652: #if ($page.contentType == "loki/bio")
653:   #set ($headlinesFeaturedSize = 0)
654:   #foreach ($featuredPage in $page.headlinesFeatured)
655:     #if ($featuredPage.contentType == "loki/headlines")
656:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
657:     #end
658:   #end
659:   #if ($headlinesFeaturedSize > 0)
660:       <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below.">
661:         <option selected="selected">Related Bios</option>
662:         #foreach ($featuredPage in $page.headlinesFeatured)
663:           #if ($featuredPage.contentType == "loki/headlines")
664:             $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
665: 		  #end
666: 	    #end
667:       </select>
668:   #end
669: #elseif ($page.contentType == "loki/bio-network")
670:   #set ($relatedPlayers = $page.sectionPage.children)
671:   #set ($teamNames = {})
672:   #foreach ($relatedPlayer in $relatedPlayers)
673:     #if ($relatedPlayer.contentType == "loki/bio-network")
674:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
675:       #set ($teamName = $relatedPlayerObj.get("team"))
676:       #if ($teamName.length() > 0)
677:         #if (!$teamNames.containsValue($teamName))
678:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
679:         #end
680:       #end
681:     #end
682:   #end
683: 
684:   <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below.">
685:   #foreach ($i in [1..$teamNames.size()])
686:     #if ($teamNames.size() > 1)
687:       <optgroup label="$teamNames.get($i)">
688:     #end
689: 
690:     #foreach ($relatedPlayer in $relatedPlayers)
691:       #if ($relatedPlayer.contentType == "loki/bio-network")
692:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
693:         #set ($teamName = $relatedPlayerObj.get("team"))
694:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
695:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
696:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
697:           #if ($page.url == $relatedPlayer.url)
698:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
699:           #else
700:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
701:           #end
702:         #end
703:       #end
704:     #end
705: 
706:     #if ($teamNames.size() > 1)
707:       </optgroup>
708:     #end
709:   #end
710:   </select>
711: #end
712: #end ## enhancedLayout check
713: #end ## macro printRoster
714: 
715: ################################################## END MACROS  #############################################################
716: 
717: #if ($attributes.get("full_name").length() > 0)
718:   #set ($fullName = $attributes.get("full_name"))
719: #else
720:   #set ($firstName = $!attributes.get("first_name"))
721:   #set ($lastName = $!attributes.get("last_name"))
722:   #set ($fullName = "${firstName} ${lastName}")
723: #end
724: 
725: #set ($actionShots = false)
726: #if ($enhancedLayout && $playerPhotos.size() > 0)
727:   #set ($actionShots = true)
728: #end
729: 
730: #if ($enhancedLayout)
731:   #set ($rootClass = "bio-enhanced")
732:   #if ($actionShots && $showActionShots)
733:   	#set ($rootClass = "${rootClass} action")
734:   #else
735:   	#set ($rootClass = "${rootClass} plain")
736:   #end
737: #else
738:   #set ($rootClass = "bio-wrap")
739: #end
740: 
741: ## FULL ROSTER
742: <div class="${rootClass} #if ($highlights) bio-wrap-has-highlights #end clearfix" data-module="stats/responsive-container">
743: 
744: ## RELATED BIOS
745: #if ($showRoster)
746:   <div class="related-bios clearfix">#printRoster</div>
747: #end
748: 
749: #if ($actionShots)
750:   #printActionShots
751: #end
752: 
753: <div class="head clearfix">
754: <div class="clearfix">
755: 
756: <div class="player-about clearfix">
757:   <div class="player-headshot">#printHeadshot</div>
758:   <div class="player-info">#printBioInfo</div>
759: </div>
760: 
761: #printHighlights
762: 
763: </div>
764: </div> ## head
765: 
766: #if ($view.length() > 0)
767: <div class="body clearfix">
768: 
769: <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary">
770: <div class="tab-nav" data-module="jscroll" data-momentum="false">
771:   <div>
772:   <ul class="clearfix">
773:   #if ($hasSynopsis || $hasBioBrief)
774:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
775:   #end
776: 
777:   #if ($statsURL.length() > 0)
778:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
779:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
780:     #if ($showCareer)
781:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
782:     #end
783:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
784:   #end
785: 
786:   #if ($hasHTMLStats)
787:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
788:   #end
789: 
790:   #if ($releases.size() > 0)
791: 	<li #if ($view == "news") class="active" #end><a href="${page.url}?view=news">News</a></li>
792:   #end
793: 
794:   #if ($playerPhotos.size() > 0)
795: 	<li #if ($view == "photos") class="active" #end><a href="${page.url}?view=photos">Photos</a></li>
796:   #end
797: 
798:   #if ($playerVideos.size() > 0)
799:     <li #if ($view == "videos") class="active" #end><a href="${page.url}?view=videos">Videos</a></li>
800:   #end
801:   </ul>
802:   </div>
803: </div> ## tab-nav
804: 
805: <div class="tab-panels clearfix">
806: 
807: ## BIO
808: #if ($hasSynopsis || $hasBioBrief)
809: 
810: #set ($class = "tab-panel clearfix")
811: #if ($view == "bio")
812:   #set ($class = "tab-panel active clearfix")
813: #end
814: <div class="${class}">
815: 
816: <div class="synopsis clearfix">
817: #if ($hasSynopsis)
818:   $synopsis
819: #elseif ($hasBioBrief)
820:   $website.include("$bioBriefURL")
821: #end
822: </div>
823: 
824: </div> ## tab-panel
825: #end
826: ## BIO
827: 
828: ## STATS
829: #if ($statsURL.length() > 0)
830: 
831: ## PROFILE
832: #set ($class = "tab-panel clearfix")
833: #if ($view == "profile")
834:   #set ($class = "tab-panel active clearfix")
835: #end
836: <div class="${class}">
837: <div class="stats-wrap clearfix">
838: 
839: ## LAST SIX GAMES
840: <div class="stats-box half">
841: #printRecentGames()
842: </div>
843: 
844: ## RANKING
845: <div class="stats-box half">
846: #if ($statPos.length() > 0)
847:   $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
848: #end
849: </div>
850: 
851: </div> ## stats-wrap
852: </div> ## tab-content
853: ## PROFILE
854: 
855: ## GAMELOG
856: #set ($class = "tab-panel clearfix")
857: #if ($view == "gamelog")
858:   #set ($class = "tab-panel active clearfix")
859: #end
860: 
861: #set ($activePos = $statPos)
862: #if ($view == "gamelog" && $paramPos.length() > 0)
863:   #if ($positions.get($paramPos).length() > 0)
864:     #set ($activePos = $positions.get($paramPos))
865:   #end
866: #end
867: 
868: <div class="${class}">
869: 
870: #if ($gamelogsCategoriesLabels)
871: <div class="tab-container clearfix secondary" data-module="stats/tabs" data-type="secondary">
872:   <div class="tab-nav" data-module="jscroll" data-momentum="false">
873:     <div>
874:     <ul class="clearfix">
875:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
876:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
877: 
878:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
879:         #set($gamelogsCatLabelVal = "Defence")
880:       #end
881: 
882:       <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>
883:     #end
884:     </ul>
885: 	</div>
886:   </div>
887:   <div class="tab-panels">
888:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
889:     #set ($class = "tab-panel clearfix")
890:     #if ($gamelogsCatLabel.key == $activePos)
891:       #set ($class = "tab-panel active clearfix")
892:     #end
893:     <div class="${class}">
894:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
895: 	</div>
896:   #end
897:   </div>
898: </div>
899: #else
900:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
901: #end
902: 
903: </div> ## tab-panel
904: ## GAMELOG
905: 
906: 
907: ## CAREER
908: #if ($showCareer)
909: 
910: #set ($activePos = $statPos)
911: #if ($view == "career" && $paramPos.length() > 0)
912:   #if ($positions.get($paramPos).length() > 0)
913:     #set ($activePos = $positions.get($paramPos))
914:   #end
915: #end
916: 
917: #set ($class = "tab-panel clearfix")
918: #if ($view == "career")
919:   #set ($class = "tab-panel active clearfix")
920: #end
921: 
922: <div class="${class}">
923: 
924: #if ($briefsCategoriesLabels)
925:   #printCategories($briefsCategoriesLabels "career" "Career Stats")
926: #else
927:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
928: #end
929: 
930: </div> ## tab-panel
931: #end
932: ## CAREER
933: 
934: ## SPLITS
935: #set ($class = "tab-panel clearfix")
936: #if ($view == "splits")
937: 	#set ($class = "tab-panel active clearfix")
938: #end
939: 
940: #set ($activePos = $statPos)
941: #if ($view == "splits" && $paramPos.length() > 0)
942:   #if ($positions.get($paramPos).length() > 0)
943:     #set ($activePos = $positions.get($paramPos))
944:   #end
945: #end
946: 
947: <div class="${class}">
948: 
949: #if ($briefsCategoriesLabels)
950:   #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
951: #else
952:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
953: #end
954: 
955: </div> ## tab-panel
956: ## SPLITS
957: 
958: #end
959: ## STATS
960: 
961: ## HTML STATS
962: #if ($hasHTMLStats)
963: 
964: #set ($class = "tab-panel clearfix")
965: #if ($view == "htmlstats")
966:   #set ($class = "tab-panel active clearfix")
967: #end
968: <div class="${class}">
969:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
970: </div>
971: 
972: #end
973: ## HTML STATS
974: 
975: ## NEWS
976: #if ($releases.size() > 0)
977: #set ($class = "tab-panel clearfix")
978: #if ($view == "news")
979:   #set ($class = "tab-panel active clearfix")
980: #end
981: <div class="${class}">
982: 	#printGrid($releases, "article")
983: </div> ## tab-content
984: #end
985: ## NEWS
986: 
987: ## PHOTOS
988: #if ($playerPhotos.size() > 0)
989: #set ($class = "tab-panel clearfix")
990: #if ($view == "photos")
991:   #set ($class = "tab-panel active clearfix")
992: #end
993: <div class="${class}">
994:     $website.includeAgain("${page.url}?tmpl=bio-photos-template")
995: </div> ## tab-content
996: #end
997: ## PHOTOS
998: 
999: ## VIDEOS
1000: #if ($playerVideos.size() > 0)
1001:   #set ($class = "tab-panel clearfix")
1002:   #if ($view == "videos")
1003:     #set ($class = "tab-panel active clearfix")
1004:   #end
1005: <div class="${class}">
1006: 	#printGrid($playerVideos, "video")
1007: </div> ## tab-content
1008: #end
1009: ## VIDEOS
1010: 
1011: </div> ## tab-panels
1012: </div> ## tab-container
1013: </div> ## body
1014: #end
1015: 
1016: $wiki
1017: </div> ## ends bio-wrap
1018: 
1019: ## GLOBAL ADS SERVER
1020: #if ($website.ads.isAdvertisingEnabled('BIOS'))
1021:         $website.includeAgain("global-adserver-slots?adSlot=bios")
1022: #end