25 Hayley Hodgins
25 Hayley Hodgins
Height: 5-10
Year: RS So.
Hometown: Pasco, Wash.
High School: Chiawana HS '11
Position: G
Experience: 1L
gp 30
pts/g 13.5
fg % 41.4
3pt % 40.6
ft % 83.6
reb/g 4.3
a/g 1.7

2013-14 Honorable Mention All-Big Sky
2013-14 Big Sky All-Academic Team

2012-13 Big Sky Outstanding Freshman
2012-13 Big Sky All-Academic Team

2013-14: Started all 30 of Eastern's games in her third year in Cheney, earning Honorable Mention All-Big Sky honors ... Ranked second on the team and 11th in the conference with a scoring average of 13.5 points per game ... Upped her scoring average to 14.6 points per game during league contests ... Knocked down 67 three-pointers, good for fourth-most in single-season history ... Ranked fourth in the league in three-pointers made per game (2.2) ... Shot 40.6 percent from three-point range, ranking third in the Big Sky and 25th nationally ... Connected on 83.6 percent of her free throws, good for sixth in the league ... Led the team and ranked ninth in the Big Sky in steals per game (1.8) ... Shot 41.4 percent from the field ... Finished tied for third on the team in rebounding (4.3) while dishing out 50 assists and blocking 16 shots ... Set a new career high with five made three-pointers against SMU (Nov. 16), finishing with 19 points, five rebounds and three steals ... Scored 16 points on 6-of-9 shooting againsty Butler (Nov. 30) ... Buried three triples against Cal State Northridge (Dec. 6), tallying 15 points to go along with six rebounds ... Pulled down eight boards and recorded four steals against Northwest (Wash.) on Dec. 17 ... Scored 14 points on 6-of-10 shooting against Boise State (Dec. 20) ... Went 7-of-8 from the charity stripe and knocked down five three-pointers against Weber State (Jan. 2), registering 22 points to ignite a stretch of 15 consecutive games with double-digit scoring efforts ... Had 19 points on 7-of-12 shooting against Idaho State (Jan. 4) ... Made four three-pointers and finished with 18 points and eight rebounds against Montana State (Jan. 11) ... Tallied a career-high 26 points on 10-of-16 shooting against Northern Arizona (Jan. 16), going 5-of-6 from downtown while registering five rebounds and four assists ... Notched 14 points, six rebounds and four assists against Sacramento State (Jan. 18) ... Went 3-of-6 from long range to finish with 15 points against Montana State (Feb. 6) ... Nearly recorded a double-double after tallying 19 points and eight rebounds against Sacramento State (Feb. 13), adding a career-best four blocks ... Shot 10-of-11 from the free throw line to finish with 22 points against Northern Arizona (Feb. 15), adding four steals ... Poured in 17 points on 5-of-12 shooting against Portland State (Feb. 24) ... Tallied 14 points, five rebounds and three steals against North Dakota (Mar. 1) ... Knocked down three triples and scored 13 points at Idaho State (Mar. 6) ... Registered 13 points to go along with four assists and two blocks against Weber State (Mar. 3) ... Had 10 points and three steals in Eastern's loss to Idaho State in a Big Sky Tournament quarterfinal game on Mar. 13 ... Earned Big Sky All-Academic honors for the second straight year.

2012-13: Became the first player from Eastern to earn the Big Sky Outstanding Freshman Award since the 1992-93 season after a stellar freshman campaign that saw her play in 31 games and make 15 starts ... Led the Eagles and ranked third in the conference in three-point percentage, connecting on 39.1 percent of her shots from long range (36-92) ... Ranked fourth on the squad in scoring with an average of 7.8 points per game, making 40.8 percent of her shots and 75 percent of her free throws (39-52) ... Upped her scoring average to 8.8 points per game in league play ... Led EWU in scoring six times during the season, five of which came in Big Sky contests while the sixth was against Washington in the opening round of the WNIT ... Hit for 20 or more points in three different games ... Finished third on the team with 17 blocks and added 26 assists and 20 steals ... Was a contributor off the bench for the first half of the season, playing no more than 18 minutes in each of Eastern’s first 12 games ... Exploded for 16 points in 25 minutes versus Northern Arizona (Jan. 10), making six of her 10 shots and nailing two triples ... Scored 10 points and hit two treys against Sacramento State (Jan. 12) before totaling 16 points on 5-of-10 shooting in EWU’s win over North Dakota (Jan. 19) ... Was a perfect 7-of-7 from the field and 3-of-3 from downtown in Eastern’s 63-38 victory over Northern Colorado (Jan. 19), finishing her first start with 17 points ... Started and played 36 minutes in EWU’s defeat of Portland State (Jan. 21), scoring 22 points and making four three-pointers ... Earned Big Sky Player of the Week honors after averaging 19.5 points over the two games ... Notched 13 points versus Northern Arizona (Feb. 9), then scored a season-best 24 points on 7-of-8 shooting in Eastern’s 83-51 win over Portland State (Feb. 21) ... Hit a trio of three-pointers and made seven of eight free throws against the Vikings ... Tallied nine points and season-best seven boards in EWU’s overtime win over Idaho State (Feb. 7) ... Recorded 11 points and hit three treys in Eastern’s defeat of Montana State in the opening round of the Big Sky Tournament ... Led the Eagles with 20 points on 7-of-13 shooting against Washington in the opening round of the WNIT (Mar. 22), tying her season high with seven boards in the double overtime loss ... Earned Big Sky All-Academic honors.

2011-12: Utilized redshirt year.

High School: Two-time Columbia Basin Big Nine Cascade Division First-Team selection ... Member of the 2011 Tri-City Herald All-Area First Team, and was twice named the Tri-City Herald Athlete of the Week ... Also recognized by the Seattle Times as a member of the All-State Second Team ... Hodgins led the Riverhawks to a third-place finish in the 2011 4A State Championships, which earned the 5-10 senior All-Tournament First-Team honors ... Following her senior season at Chiawana, Hodgins was selected to compete in the 18th Annual All-Star Media Classic, which featured the top players from the Yakima and Tri-Cities area ... Hodgins led the Tri-City All Stars to a 79-71 victory over the Yakima All-Stars with 19 points and four rebounds ... She was named the game's Most Valuable Player ... During her junior campaign, Hodgins was named to the All-Regional Tournament First-Team and the CBBN All-Defensive First Team ... She was the league’s leading scorer, averaging 18.4 points per game ... She shot 46 percent from three-point range, which was also the best in the league ... She helped her squad to a fifth-place finish at the state championships in 2010 ... Hodgins was also on the honor roll at Chiawana all four years of her prep career.

Personal: Undecided on major ... Daughter of Michael and Karen Hodgins ... Mother, Karen, played basketball at the University of Washington from 1981-84, and remains as the fourth all-time leading scorer in UW history ... Karen Hodgins (formerly Murray) scored 1,745 points in her four-year Husky career ... She became the first female to ever be inducted into the UW Hall of Fame in 1992 ... She was a two-time All-Northern Pacific Athletic Conference selection and still owns the school record for career field goal percentage at 54.1 percent ... Her 738 made field goals ranks second in the career record book, while her 416 assists are third and her 230 steals are fourth.


Hodgins's Career Statistics

        Total 3-Point F-Throws Rebounds                
YEAR GP-GS MIN AVG FG FGA PCT FG FGA PCT FT FTA PCT OFF DEF TOT AVG PF FO AST TO BLK STL PTS AVG
2012-13 31-15 670 21.6 84 206 .408 36 92 .391 39 52 .750 31 44 75 2.4 49 0 26 41 17 20 243 7.8
2013-14 30-30 955 31.8 138 333 .414 67 165 .406 61 73 .836 42 86 128 4.3 56 2 50 57 16 53 404 13.5
TOTAL 61-45 1625 26.6 222 539 .412 103 257 .401 100 125 .800 73 130 203 3.3 105 2 76 98 33 73 647 10.6
                                                 

Hodgins's Career Highs

Points: 26 vs. Northern Arizona (Jan. 16, 2014)                              
Rebounds: 9 vs. Portland State (Dec. 29, 2013)                              
Assists: 4, 6x, last at Weber State (Mar. 8, 2014)                              
Steals: 4, 4x, last at Northern Arizona (Feb. 15, 2014)                              
Blocks: 4 at Sacramento State (Feb. 13, 2014)                              
FG Made: 10 vs. Northern Arizona (Jan. 16, 2014)                              
FG Attempts: 19 at Montana State (Jan. 11, 2014)                              
3FG Made: 5, 3x, last vs. Northern Arizona (Jan. 2, 2014)                              
3FG Attempts: 9, 3x, last vs. North Dakota (Mar. 1, 2014)                              
FT Made: 10 at Northern Arizona (Feb. 15, 2014)                              
FT Attempts: 11 at Northern Arizona (Feb. 15, 2014)                              
Recent Games
Feb 24 at Portland State W, 61-60
Feb 27 Northern Colorado W, 67-61
Mar 1 North Dakota L, 61-57
Mar 6 at Idaho State L, 86-62
Mar 8 at Weber State W, 68-60
Mar 13 vs. Idaho State L, 70-65
Statistics category Overall Conf
Games 30 20
Games started 30 20
Minutes 955 678
Minutes per game 31.8 33.9
FG 138-333 96-235
FG Pct 41.4 40.9
3PT 67-165 48-117
3PT Pct 40.6 41.0
FT 61-73 52-64
FT Pct 83.6 81.3
Off rebounds 42 29
Def rebounds 86 60
Total rebounds 128 89
Rebounds per game 4.3 4.5
Personal fouls 56 32
Disqualifications 2 0
Assists 50 38
Turnovers 57 37
Assist to turnover ratio 0.9 1.0
Steals 53 37
Blocks 16 11
Points 404 292
Points per game 13.5 14.6
Points per 40 min 16.9 17.2
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 1 Master's College W, 87-74 1 29 4-7 57.1 4-6 66.7 1-2 50.0 13
Nov 8 at Portland L, 68-65 1 29 5-11 45.5 2-7 28.6 2-2 100.0 14
Nov 16 SMU L, 75-70 1 35 7-16 43.8 5-9 55.6 0-0 - 19
Nov 20 at Gonzaga L, 78-58 1 17 0-3 0.0 0-1 0.0 0-0 - 0
Nov 29 vs. Iowa St. L, 88-60 1 26 2-8 25.0 1-6 16.7 0-0 - 5
Nov 30 vs. Butler L, 74-51 1 19 6-9 66.7 1-2 50.0 3-3 100.0 16
Dec 6 Cal State Northridge W, 73-53 1 30 5-11 45.5 3-6 50.0 2-2 100.0 15
Dec 14 Idaho W, 85-84 1 31 6-13 46.2 2-5 40.0 0-0 - 14
Dec 17 Northwest (Wash) W, 90-48 1 24 2-8 25.0 1-5 20.0 0-0 - 5
Dec 20 Boise St. W, 81-66 1 28 6-10 60.0 2-4 50.0 0-0 - 14
Dec 29 Portland State L, 86-74 1 32 1-7 14.3 0-3 0.0 3-4 75.0 5
Jan 2 Weber State W, 78-67 1 23 5-10 50.0 5-8 62.5 7-8 87.5 22
Jan 4 Idaho State W, 67-55 1 37 7-12 58.3 3-4 75.0 2-2 100.0 19
Jan 9 at Montana L, 81-64 1 31 4-7 57.1 2-4 50.0 0-0 - 10
Jan 11 at Montana State L, 78-74 1 35 7-19 36.8 4-8 50.0 0-0 - 18
Jan 16 Northern Arizona W, 92-68 1 36 10-16 62.5 5-6 83.3 1-2 50.0 26
Jan 18 Sacramento State W, 78-65 1 35 6-15 40.0 2-5 40.0 0-0 - 14
Jan 25 at Southern Utah L, 62-61 1 32 5-12 41.7 0-2 0.0 2-3 66.7 12
Jan 30 at North Dakota L, 82-60 1 27 4-9 44.4 2-5 40.0 0-0 - 10
Feb 1 at Northern Colorado W, 52-51 1 40 3-13 23.1 2-8 25.0 4-4 100.0 12
Feb 6 Montana State W, 81-66 1 37 6-11 54.5 3-6 50.0 0-0 - 15
Feb 8 Montana W, 71-61 1 37 3-9 33.3 2-7 28.6 2-2 100.0 10
Feb 13 at Sacramento State W, 79-73 1 34 6-13 46.2 3-9 33.3 4-5 80.0 19
Feb 15 at Northern Arizona L, 86-78 1 37 5-15 33.3 2-6 33.3 10-11 90.9 22
Feb 20 Southern Utah W, 59-54 1 33 4-12 33.3 2-5 40.0 2-4 50.0 12
Feb 24 at Portland State W, 61-60 1 36 5-12 41.7 3-6 50.0 4-6 66.7 17
Feb 27 Northern Colorado W, 67-61 1 32 2-7 28.6 1-5 20.0 4-4 100.0 9
Mar 1 North Dakota L, 61-57 1 34 5-14 35.7 2-9 22.2 2-2 100.0 14
Mar 6 at Idaho State L, 86-62 1 35 4-12 33.3 3-6 50.0 2-3 66.7 13
Mar 8 at Weber State W, 68-60 1 35 4-10 40.0 2-5 40.0 3-4 75.0 13
Mar 13 vs. Idaho State L, 70-65 1 38 3-9 33.3 2-3 66.7 2-2 100.0 10
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 1 Master's College W, 87-74 1 29 1 4 5 3 5 0.6 1 1 3 0
Nov 8 at Portland L, 68-65 1 29 0 4 4 1 1 1.0 2 2 2 0
Nov 16 SMU L, 75-70 1 35 1 4 5 1 1 1.0 3 1 2 0
Nov 20 at Gonzaga L, 78-58 1 17 1 0 1 0 1 0.0 1 0 2 0
Nov 29 vs. Iowa St. L, 88-60 1 26 0 1 1 2 3 0.7 2 0 5 1
Nov 30 vs. Butler L, 74-51 1 19 0 0 0 0 3 0.0 1 0 3 0
Dec 6 Cal State Northridge W, 73-53 1 30 4 2 6 3 2 1.5 0 0 1 0
Dec 14 Idaho W, 85-84 1 31 2 3 5 1 2 0.5 0 1 1 0
Dec 17 Northwest (Wash) W, 90-48 1 24 3 5 8 1 2 0.5 4 0 3 0
Dec 20 Boise St. W, 81-66 1 28 0 5 5 2 0 - 0 0 0 0
Dec 29 Portland State L, 86-74 1 32 3 6 9 2 4 0.5 1 0 3 0
Jan 2 Weber State W, 78-67 1 23 0 5 5 1 0 - 1 0 1 0
Jan 4 Idaho State W, 67-55 1 37 2 4 6 1 2 0.5 4 0 1 0
Jan 9 at Montana L, 81-64 1 31 0 0 0 1 3 0.3 2 0 4 0
Jan 11 at Montana State L, 78-74 1 35 2 6 8 2 0 - 2 0 0 0
Jan 16 Northern Arizona W, 92-68 1 36 3 2 5 4 1 4.0 2 0 2 0
Jan 18 Sacramento State W, 78-65 1 35 3 3 6 4 2 2.0 2 1 2 0
Jan 25 at Southern Utah L, 62-61 1 32 0 1 1 0 3 0.0 2 0 2 0
Jan 30 at North Dakota L, 82-60 1 27 3 0 3 0 3 0.0 3 0 3 -
Feb 1 at Northern Colorado W, 52-51 1 40 2 1 3 0 2 0.0 2 0 2 -
Feb 6 Montana State W, 81-66 1 37 0 4 4 2 2 1.0 0 0 2 -
Feb 8 Montana W, 71-61 1 37 0 6 6 4 1 4.0 0 1 1 -
Feb 13 at Sacramento State W, 79-73 1 34 3 5 8 2 2 1.0 0 4 0 -
Feb 15 at Northern Arizona L, 86-78 1 37 0 2 2 2 2 1.0 4 0 2 -
Feb 20 Southern Utah W, 59-54 1 33 3 4 7 1 3 0.3 2 0 0 -
Feb 24 at Portland State W, 61-60 1 36 0 3 3 3 1 3.0 2 1 1 -
Feb 27 Northern Colorado W, 67-61 1 32 2 2 4 1 1 1.0 1 0 1 -
Mar 1 North Dakota L, 61-57 1 34 2 3 5 2 2 1.0 3 2 2 -
Mar 6 at Idaho State L, 86-62 1 35 1 0 1 2 2 1.0 3 0 1 -
Mar 8 at Weber State W, 68-60 1 35 0 3 3 4 1 4.0 1 2 2 -
Mar 13 vs. Idaho State L, 70-65 1 38 2 2 4 1 5 0.2 3 1 5 1
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too few arguments to macro. Wanted 4 got 3 at bio-template[line 178, column 5]
Page source:
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4: #set ($locale = "en_us")
5: #set ($locale = $options.get("locale"))
6: 
7: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
8: #set ($bioObject = $page.getDataAsObject())
9: #set ($statsURL = $bioObject.statsURL)
10: 
11: #if ($statsURL.length() > 0)
12:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
13:   ## various settings to get the variables set
14:   #set ($events = $request.getAttribute("bio_events"))
15:   #set ($seasons = $request.getAttribute("bio_seasons"))
16:   #set ($career = $request.getAttribute("bio_career"))
17:   #set ($labels = $request.getAttribute("bio_labels"))
18:   #set ($briefs = $request.getAttribute("bio_briefs"))
19:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
20:   #set ($splits = $request.getAttribute("bio_splits"))
21:   #set ($statPosition = $request.getAttribute("bio_position"))
22:   #set ($positions = $request.getAttribute("bio_positions"))
23:   #set ($playerId = $request.getAttribute("bio_player_id"))
24:   #set ($highlights = $request.getAttribute("bio_highlights"))
25:   #set ($formats = $request.getAttribute("bio_formats"))
26:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
27:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
28:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
29:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
30: #end
31: 
32: #set ($pos = "")
33: #set ($pos = $attributes.get("position"))
34: #set ($pos = $statPosition)
35: #set ($posVec = $pos.split("/"))
36: #set ($pos = $posVec[0])
37: #set ($pos = $pos.toLowerCase())
38: #set ($statPos = $positions.get($pos))
39: #set ($paramPos = $request.getParameter("pos"))
40: 
41: #set ($playerId = $attributes.get("playerId"))
42: #set ($stats = $splits.overall)
43: #set ($highlights = $highlights.get($statPos))
44: 
45: #set ($showHighlights = true)
46: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
47: 	#set ($showHighlights = false)
48: #end
49: 
50: #set ($showCareer = $wiki.valid() && $seasons)
51: #if ("yes" == $options.get("stats_show_career") && $seasons)
52:   #set ($showCareer = true)
53: #end
54: 
55: #set ($hasEvents = $events.size() > 0)
56: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
57: #set ($htmlStatsURL = "${page.url}-stats")
58: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
59: #set ($bioBriefURL = "${page.url}-brief")
60: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
61: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
62: #if ($options.get("bio_hide_roster") == true)
63:   #set ($showRoster = false)
64: #end
65: 
66: #set ($view = "")
67: #if ($hasSynopsis || $hasBioBrief)
68:   #set ($view = "bio")
69: #elseif ($statsURL.length() > 0)
70:   #set ($view = "profile")
71: #elseif ($hasHTMLStats)
72:   #set ($view = "htmlstats")
73: #end
74: 
75: #if ($options.get("bio_default_view").length() > 0)
76:   #set ($checkView = $options.get("bio_default_view"))
77: #end
78: 
79: #if ($request.getParameter("view"))
80:   #set ($checkView = $request.getParameter("view"))
81: #end
82: 
83: #if ($checkView == "profile" && $statsURL.length() > 0)
84:   #set ($view = "profile")
85: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
86:   #set ($view = "bio")
87: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
88:   #set ($view = "gamelog")
89: #elseif ($checkView == "career" && $showCareer)
90:   #set ($view = "career")
91: #elseif ($checkView == "splits" && $statsURL.length() > 0)
92:   #set ($view = "splits")
93: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
94:   #set ($view = "htmlstats")
95: #end
96: 
97: #macro (gamelogData $p)
98: 
99: #set ($p = $positions.get($p))
100: #set ($gamelogs = $gamelogs.get($p))
101: 	
102: #if ($hasEvents)
103: <div class="stats-box full clearfix">
104: <div class="scrollable">
105: <div>
106: <table>
107:   <tr class="thead">
108:     <th class="text">Date</th>
109:     <th class="pinned-col text">Opponent</th>
110:     <th>Score</th>
111:     #foreach ($gamelog in $gamelogs)
112:       <th>$gamelog</th>
113:     #end
114:   </tr>
115: #foreach ($event in $events)
116:   <tr>
117:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
118:     <td class="pinned-col text">
119:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
120:       $event.event.opponent.name
121:     </td>
122:     <td>
123:     #if ($event.event.statusCode >= 0)
124:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
125:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
126:       #else
127:       ${event.event.APResult}
128:       #end
129:     #else &nbsp; #end
130:     </td>
131:     #foreach ($gamelog in $gamelogs.keySet())
132:       #set ($value = "-")
133:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
134:       <td>$value</td>
135:     #end
136:   </tr>
137: #end
138: </table>
139: </div>
140: </div> ## scrollable
141: </div> ## stats-box
142: #end
143: 
144: #end ## macro gamelogData
145: 
146: #macro (split $statPosBriefs $label $stats)
147:   <tr>
148:     <td class="pinned-col text">${label}</td>
149:     #foreach ($brief in $statPosBriefs.keySet())
150:       #set ($value = "-")
151:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
152:       <td>#if ($value.length() > 0) $value #else - #end</td>
153:     #end
154:   </tr>
155: #end
156: 
157: #macro (careerData $p)
158: #set ($p = $positions.get($p))
159: #set ($statPosBriefs = $briefs.get($p))
160: 
161: <div class="stats-box full clearfix">
162: <div class="scrollable">
163: <div>
164: <table>
165: <tr class="thead">
166:   <th class="pinned-col">&nbsp;</th>
167:   #foreach ($brief in $statPosBriefs)
168:     <th>$brief</th>
169:   #end
170: </tr>
171: 
172: #set ($careerTotals = $request.getAttribute("careerTotals"))
173: #set ($careerMap = $request.getAttribute("careerMap"))
174: 
175: #foreach ($season in $seasons)
176:   ## Check if we did not get stats for this season
177:   #if ($careerMap.get($season.seasonName))
178:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
179:   #elseif ($wiki.valid())
180:     <tr>
181:       <td class="text">${season.seasonName}</td>
182:       <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
183:     </tr>
184:   #end
185: #end
186: 
187: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
188: 
189: </table>
190: </div>
191: </div> ## scrollable
192: </div> ## stats-box
193: 
194: #end ## macro careerData
195: 
196: #macro (splitsData $p)
197: 
198: #set ($p = $positions.get($p))
199: #set ($statPosBriefs = $briefs.get($p))
200: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))	
201: 	
202: #if ($statPosBriefs.size() > 0)
203: <div class="stats-box full clearfix">
204: <div class="scrollable">
205: <div>
206: <table>
207:   <tr>
208:     <th class="pinned-col">&nbsp;</th>
209:     #foreach ($brief in $statPosBriefs)
210:       <th>$brief</th>
211:     #end
212:   </tr>
213: 
214: #split($statPosBriefs, "Total", $splits.overall)
215: #split($statPosBriefs, "Conference", $splits.conference)
216: #split($statPosBriefs, "Exhibition", $splits.exhibition)
217: 
218: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
219: 
220: #split($statPosBriefs, "Home", $splits.home)
221: #split($statPosBriefs, "Away", $splits.away)
222: #split($statPosBriefs, "Neutral", $splits.neutral)
223: 
224: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
225: 
226: #foreach($gameResult in $gamesResults.entrySet())
227:   #if ($gameResult.key == "wins")
228:     #set ($splitGameResult = $splits.inWins)
229:   #elseif ($gameResult.key == "losses")
230:     #set ($splitGameResult = $splits.inLosses)
231:   #elseif ($gameResult.key == "ties")
232:     #set ($splitGameResult = $splits.inTies)
233:   #end
234: 	
235:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
236: #end
237: 
238: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
239: 
240: #if ($monthsPlayed and $monthsPlayed.size() > 0)
241:   #foreach($month in $monthsPlayed)
242:     #if ($month == 'January')
243:       #set ($splitMonth = $splits.january)
244:     #elseif ($month == 'February')
245:       #set ($splitMonth = $splits.february)
246:     #elseif ($month == 'March')
247:       #set($splitMonth = $splits.march)
248:     #elseif ($month == 'April')
249:       #set($splitMonth = $splits.april)
250:     #elseif ($month == 'May')
251:       #set ($splitMonth = $splits.may)
252:     #elseif ($month == 'June')
253:       #set ($splitMonth = $splits.june)
254:     #elseif ($month == 'July')
255:       #set($splitMonth = $splits.july)
256:     #elseif ($month == 'August')
257:       #set ($splitMonth = $splits.august)
258:     #elseif ($month == 'September')
259:       #set($splitMonth = $splits.september)
260:     #elseif ($month == 'October')
261:       #set($splitMonth = $splits.october)
262:     #elseif ($month == 'November')
263:       #set ($splitMonth = $splits.november)
264:     #elseif ($month == 'December')
265:       #set($splitMonth = $splits.december)
266:     #end
267: 		
268:     #split($statPosBriefs, $month, $splitMonth)
269:   #end ## foreach
270: #end
271: </table>
272: </div>
273: </div> ## scrollable
274: </div> ## srollable-table
275: #end
276: 
277: #end ## macro splitsData
278: 
279: #macro (printRecentGames)
280: #if ($hasEvents)
281: <table>
282:   <tr class="thead"><th colspan="3">Recent Games</th></tr>
283:   
284: #set ($eventEnd = -1)
285: #foreach ($event in $events)
286:   #if ($event.event.result.resolved)
287:     #set ($eventEnd = $velocityCount)
288:   #end
289: #end
290: 
291: #set ($eventStart = $eventEnd - 5)
292: #if ($eventStart < 0) #set ($eventStart = 0) #end
293: 
294: #foreach ($event in $events)
295: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
296:   <tr>
297:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
298:     <td class="text">
299:       #if ($event.event.neutralSite.length() > 0) vs.
300:       #elseif (!$event.event.home) at
301:       #else ## nothing for a home game
302:       #end
303:       $event.event.opponent.name
304:     </td>
305:     <td class="text">
306:     #if ($event.event.statusCode >= 0)
307:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
308:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
309:       #else
310:       ${event.event.APResult}
311:       #end
312: 	#end
313: 	</td>
314:   </tr>
315: #end ## if
316: #end
317: </table>
318: #end
319: #end ## macro printRecentGames
320: 
321: #macro (printCategories $briefCategoryLabels $v)
322: 	
323: <div class="tab-container secondary clearfix">
324: <div class="tab-nav" data-jscroll="true" data-momentum="false">
325: <div>
326: <ul class="clearfix">
327: #foreach($briefCat in $briefCategoryLabels.entrySet())
328:   #set ($briefCatLabel = $briefCat.value)
329:   #set ($briefCatKey = $briefCat.key)
330: 		
331:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
332:     #set ($briefCatLabel = "Defence")
333:   #end	
334: 	
335:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}">$briefCatLabel</a></li>
336: #end
337: </ul>
338: </div>
339: </div>
340: <div class="tab-panels">
341: #foreach ($briefCat in $briefCategoryLabels.entrySet())
342:   #set ($class = "tab-panel clearfix")
343:   #if ($briefCat.key == $activePos)
344:     #set ($class = "tab-panel active clearfix")
345:   #end
346:   <div class="$class">
347:     <div class="stats-wrap clearfix">
348:     #if ($v == "splits")
349:       #splitsData($briefCat.key)
350:     #elseif ($v == "career")
351:       #careerData($briefCat.key)
352:     #end
353:     </div>
354:   </div>
355: #end	
356: </div>
357: </div> ## tab-container
358: 
359: #end ## macro printCategories
360: 	
361: #macro (printHeadshot)
362: 
363: #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
364: 
365: #if ($headshot.url)
366:   <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
367: #else
368:   #if ($website.exists("/images/setup/headshot_default.jpg"))
369:     <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
370:   #else
371:     <img src="/info/images/default_headshot.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
372:   #end
373: #end
374: #end ## macro printHeadshot
375: 	
376: #macro (printBioInfo)
377: <div class="player-name">
378:   #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
379:   <span class="name">$fullName</span>
380: </div>	
381: 	
382: <table>
383: #foreach ($i in [1..10])
384:   #set ($stickyKey = "bio_custom${i}_sticky")
385:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
386:     <tr>
387:       <td class="label">$options.get($stickyKey): </td>
388:       <td class="value">$!attributes.get("custom${i}")</td>
389:     </tr>
390:   #end
391: #end
392: 
393: #foreach ($field in $fields)
394:   #if (!$field.key.startsWith("custom"))
395:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
396:       #if ($field.key == "phone1" || $field.key == "phone2")
397:         <tr>
398:           <td class="label">Phone: </td>
399:           <td class="value">$!attributes.get($field.key)</td>
400:         </tr>
401:       #elseif ($field.key == "email_address")
402:         #set ($emailAdd = $attributes.get($field.key))
403:         <tr>
404:           <td class="label">Email: </td>
405:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
406:         </tr>
407:       #else
408:         <tr>
409:           <td class="label">$field.value: </td>
410:           <td class="value">$!attributes.get($field.key)</td>
411:         </tr>
412:       #end
413:     #end
414:   #end
415: #end
416: 
417: #foreach ($i in [1..10])
418:   #set ($customKey = "bio_custom${i}")
419:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
420:     <tr>
421:       <td class="label">$options.get($customKey): </td>
422:       <td class="value">$!attributes.get("custom${i}")</td>
423:     </tr>
424:   #end
425: #end
426: </table>
427: #end ## macro printBioInfo
428: 	
429: #macro (printHighlights)
430: #foreach ($highlight in $highlights.keySet())
431:   #set ($value = "-")
432:   #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
433:   <div class="stat clearfix">
434:     <span class="stat-title">$!highlights.get($highlight)</span>
435:     <span class="stat-value">$value</span>
436:   </div>
437: #end
438: #end ## macro printHighlights
439: 	
440: #macro (printRoster)
441: #if ($page.contentType == "loki/bio")
442:   #set ($headlinesFeaturedSize = 0)
443:   #foreach ($featuredPage in $page.headlinesFeatured)
444:     #if ($featuredPage.contentType == "loki/headlines")
445:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
446:     #end
447:   #end
448:   #if ($headlinesFeaturedSize > 0)
449:     <select class="roster-select-list">
450:       <option selected="selected">Related Bios</option>
451:       #foreach ($featuredPage in $page.headlinesFeatured)
452:         #if ($featuredPage.contentType == "loki/headlines")
453:           $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
454: 		#end
455: 	  #end
456:     </select>
457:   #end
458: #elseif ($page.contentType == "loki/bio-network")
459:   #set ($relatedPlayers = $page.sectionPage.children)
460:   #set ($teamNames = {})
461:   #foreach ($relatedPlayer in $relatedPlayers)
462:     #if ($relatedPlayer.contentType == "loki/bio-network")
463:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
464:       #set ($teamName = $relatedPlayerObj.get("team"))
465:       #if ($teamName.length() > 0)
466:         #if (!$teamNames.containsValue($teamName))
467:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
468:         #end
469:       #end
470:     #end
471:   #end
472: 
473:   <select class="roster-select-list">
474:   #foreach ($i in [1..$teamNames.size()])
475:     #if ($teamNames.size() > 1)
476:       <optgroup label="$teamNames.get($i)">
477:     #end
478: 				
479:     #foreach ($relatedPlayer in $relatedPlayers)
480:       #if ($relatedPlayer.contentType == "loki/bio-network")
481:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
482:         #set ($teamName = $relatedPlayerObj.get("team"))
483:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
484:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
485:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
486:           #if ($page.url == $relatedPlayer.url)
487:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
488:           #else
489:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
490:           #end
491:         #end
492:       #end
493:     #end
494: 				
495:     #if ($teamNames.size() > 1)
496:       </optgroup>
497:     #end
498:   #end
499:   </select>
500: #end
501: #end ## macro printRoster
502: 	
503: ################################################## END MACROS  #############################################################
504: 
505: #if ($attributes.get("full_name").length() > 0)
506:   #set ($fullName = $attributes.get("full_name"))
507: #else
508:   #set ($firstName = $!attributes.get("first_name"))
509:   #set ($lastName = $!attributes.get("last_name"))
510:   #set ($fullName = "${firstName} ${lastName}")
511: #end
512: 
513: ## FULL ROSTER
514: <div class="bio-wrap clearfix">
515: 	
516: ## RELATED BIOS
517: #if ($showRoster)
518:   <div class="related-bios clearfix">#printRoster</div>
519: #end
520:   
521: <div class="head clearfix">
522: <div class="clearfix">
523:     
524: <div class="player-about clearfix">
525:   <div class="player-headshot">#printHeadshot</div>
526:   <div class="player-info">#printBioInfo</div>
527: </div>
528: 
529: #if ($highlights && $showHighlights)
530:   <div class="player-highlights clearfix">#printHighlights</div>
531: #end
532: 
533: </div>
534: </div> ## head
535: 
536: #if ($view.length() > 0)
537: <div class="body clearfix">
538:   
539: <div class="tab-container primary clearfix">
540:   
541: <div class="tab-nav" data-jscroll="true" data-momentum="false">
542:   <div>
543:   <ul class="clearfix">
544:   #if ($hasSynopsis || $hasBioBrief)
545:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
546:   #end
547: 		
548:   #if ($statsURL.length() > 0)
549:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
550:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
551:     #if ($showCareer)
552:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
553:     #end
554:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
555:   #end
556: 
557:   #if ($hasHTMLStats)
558:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
559:   #end
560:   </ul>
561:   </div>
562: </div> ## tab-nav
563: 
564: <div class="tab-panels clearfix">
565: 	
566: ## BIO
567: #if ($hasSynopsis || $hasBioBrief)
568: 
569: #set ($class = "tab-panel clearfix")
570: #if ($view == "bio")
571:   #set ($class = "tab-panel active clearfix")
572: #end
573: <div class="${class}">
574: 
575: <div class="synopsis clearfix">
576: #if ($hasSynopsis)
577:   $synopsis
578: #elseif ($hasBioBrief)
579:   $website.include("$bioBriefURL")
580: #end
581: </div>
582: 
583: </div> ## tab-panel
584: #end 
585: ## BIO
586: 
587: ## STATS
588: #if ($statsURL.length() > 0)
589: 
590: ## PROFILE
591: #set ($class = "tab-panel clearfix")
592: #if ($view == "profile")
593:   #set ($class = "tab-panel active clearfix")
594: #end
595: <div class="${class}">
596: <div class="stats-wrap clearfix">
597: 
598: ## LAST SIX GAMES
599: <div class="stats-box half">
600: #printRecentGames()
601: </div>
602: 
603: ## RANKING
604: <div class="stats-box half">
605: #if ($statPos.length() > 0)
606:   $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
607: #end
608: </div>
609: 
610: </div> ## stats-wrap	
611: </div> ## tab-content
612: ## PROFILE
613: 
614: ## GAMELOG
615: #set ($class = "tab-panel clearfix")
616: #if ($view == "gamelog")
617:   #set ($class = "tab-panel active clearfix")
618: #end
619: 
620: #set ($activePos = $statPos)
621: #if ($view == "gamelog" && $paramPos.length() > 0)
622:   #if ($positions.get($paramPos).length() > 0)
623:     #set ($activePos = $positions.get($paramPos))
624:   #end
625: #end
626: 
627: <div class="${class}">
628: 
629: #if ($gamelogsCategoriesLabels)
630: <div class="tab-container secondary clearfix">
631:   <div class="tab-nav" data-jscroll="true" data-momentum="false">
632:     <div>
633:     <ul class="clearfix">
634:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
635:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
636: 		
637:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
638:         #set($gamelogsCatLabelVal = "Defence")
639:       #end
640: 
641:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
642:     #end
643:     </ul>
644: 	</div>
645:   </div>
646:   <div class="tab-panels">
647:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
648:     #set ($class = "tab-panel clearfix")
649:     #if ($gamelogsCatLabel.key == $activePos)
650:       #set ($class = "tab-panel active clearfix")
651:     #end
652:     <div class="${class}">
653:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
654: 	</div>
655:   #end   
656:   </div>
657: </div>	
658: #else
659:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
660: #end
661: 	
662: </div> ## tab-panel
663: ## GAMELOG
664: 
665: 
666: ## CAREER
667: #if ($showCareer)
668: 
669: #set ($activePos = $statPos)
670: #if ($view == "career" && $paramPos.length() > 0)
671:   #if ($positions.get($paramPos).length() > 0)
672:     #set ($activePos = $positions.get($paramPos))
673:   #end
674: #end
675: 
676: #set ($class = "tab-panel clearfix")
677: #if ($view == "career")
678:   #set ($class = "tab-panel active clearfix")
679: #end
680: 
681: <div class="${class}">
682: 
683: #if ($briefsCategoriesLabels)
684:   #printCategories($briefsCategoriesLabels "career")
685: #else
686:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
687: #end		
688: 
689: </div> ## tab-panel
690: #end
691: ## CAREER
692: 
693: ## SPLITS
694: #set ($class = "tab-panel clearfix")
695: #if ($view == "splits")
696: 	#set ($class = "tab-panel active clearfix")
697: #end
698: 
699: #set ($activePos = $statPos)
700: #if ($view == "splits" && $paramPos.length() > 0)
701:   #if ($positions.get($paramPos).length() > 0)
702:     #set ($activePos = $positions.get($paramPos))
703:   #end
704: #end
705: 
706: <div class="${class}">
707: 
708: #if ($briefsCategoriesLabels)
709:   #printCategories($briefsCategoriesLabels "splits")
710: #else
711:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
712: #end		
713: 
714: </div> ## tab-panel
715: ## SPLITS
716: 
717: #end 
718: ## STATS
719: 
720: ## HTML STATS
721: #if ($hasHTMLStats)
722: 
723: #set ($class = "tab-panel clearfix")
724: #if ($view == "htmlstats")
725:   #set ($class = "tab-panel active clearfix")
726: #end
727: <div class="${class}">
728:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
729: </div>
730: 
731: #end
732: ## HTML STATS
733: 	
734: </div> ## tab-panels
735: </div> ## tab-container
736: </div> ## body
737: #end
738: 
739: $wiki
740: </div> ## ends bio-wrap

View: Mobile | Desktop