42 Melissa Williams
42 Melissa Williams
Height: 6-1
Year: Jr.
Hometown: Camas, Wash.
High School: Camas HS '11
Position: F
Experience: 2L
Twitter: @melissawillie42
gp 30
pts/g 6.0
fg % 44.6
3pt % 0.0
ft % 77.4
reb/g 6.2
a/g 1.0

2013-14 Big Sky All-Academic Team
2012-13 Big Sky All-Academic Team

2011-12 Big Sky All-Academic Team 

2013-14: Appeared in all 30 of Eastern's games in her third year in Cheney, making 19 starts ... Averaged 25.2 minutes per game ... Led the team and ranked 12th in the Big Sky in rebounding, pulling down an average of 6.2 boards per game ... Averaged 4.7 defensive rebounds per game, good for seventh in the Big Sky ... Averaged 6.0 points per game, good for fifth on the team ... Connected on 44.6 percent of her shots and 77.4 percent (24-31) of her free throw attempts ... Shot 85.0 percent (17-20) from the charity stripe in Big Sky games ... Tied for the team lead with 23 blocked shots ... Tallied 20 assists and 25 steals ... Finished with six points and four rebounds in Eastern's season opener at Portland (Nov. 8) ... Pulled down six rebounds and scored four points against SMU (Nov. 16) ... Tallied 10 points and five rebounds against nationally-ranked Iowa State (Nov. 29) ... Recorded a career-high 13 rebounds and added eight points against Butler (Nov. 30) ... Registered eight rebounds and four points in EWU's win over Cal State Northridge (Dec. 6) ... Went for six points, seven rebounds and two blocks against Northwest (Wash.) on Dec. 17 ... Scored six points on 3-of-4 shooting against Boise State (Dec. 20), adding five rebounds ... Tallied six points, five rebounds and a career-high four steals versus Portland State (Dec. 29) ... Pulled down seven rebounds against Weber State (Jan. 2) before recording six boards and four points versus Idaho State (Jan. 4) ... Notched eight points and six rebounds at Montana (Jan. 9) ... Scored 10 points on 5-of-10 shooting against Sacramento State (Jan. 18), adding four rebounds ... Tallied six rebounds and 10 points against Northern Colorado (Feb. 1), igniting a stretch of three games with double-digit rebounds ... Recorded her first double-double of the year with 12 points and 11 rebounds in Eastern's win over Montana State (Feb. 6) ... Followed that up with another double-double, this time going for 10 points and 10 boards against Montana (Feb. 8) ... Earned co-Big Sky Player of the Week honors following her double-doubles against the Montana schools ... Tallied seven points and four assists against Sacramento State (Feb. 13) ... Finished with eight points and eight rebounds against Southern Utah (Feb. 20), shooting 4-of-5 from the field ... Recorded six points on 3-of-4 shooting against Portland State (Feb. 24), adding seven rebounds ... Pulled down nine boards in EWU's win over Northern Colorado (Feb. 27) before tallying four points and six rebounds against North Dakota (Mar. 1) ... Scored a career-high 23 points on 9-of-13 shooting at Idaho State (Mar. 6), adding five rebounds ... Registered her third double-double of the year against Weber State (Mar. 8), finishing with 10 points and 10 rebounds ... Had 10 points in Eastern's loss to Idaho State in the quarterfinals of the Big Sky Tournament (Mar. 13) ... Earned Big Sky All-Academic honors for the third consecutive season.

2012-13: Played in 29 games and recorded 13 starts in her second year at Eastern ... Finished second on the team in rebounding with an average of 6.1 rebounds per game, also good for 13th in the Big Sky ... Tallied two double-doubles on the season, good for second on the team ... Also ranked second on the squad in field goal percentage, shooting at a .458 clip (55-120) ... Made 77.1 percent of her free throws, upping that percentage to 80.0 in conference play ... Grabbed 10 rebounds in 20 minutes against Cal State Northridge (Nov. 15) ... Played 32 minutes and totaled 10 boards versus cross-town rival Gonzaga (Dec. 4) ... Went for eight points and seven rebounds against Warner Pacific (Dec. 29) before tallying seven points and 10 boards in the Eagles’ 58-56 win over Montana (Jan. 3) ... Recorded her first career double-double against Northern Arizona (Jan. 10), finishing with 13 points and 11 rebounds ... Scored 10 points on 5-of-7 shooting and grabbed 11 rebounds against Sacramento State (Jan. 12) ... Had four points and six rebounds in 19 minutes versus Sacramento State (Feb. 7) ... Grabbed nine boards in EWU’s 83-51 win over Portland State (Feb. 21) ... Went for eight points and seven rebounds in Eastern’s 67-58 win over North Dakota (Mar. 2) ... Recorded seven rebounds against both Idaho State (Mar. 7) and Weber State (Mar. 9), adding six points against the Wildcats ... Registered nine rebounds in the Eagles’ victory over Montana State in the opening round of the Big Sky Tournament (Mar. 13) ... Scored 10 points and grabbed five boards in EWU’s loss to Northern Colorado in the semifinals of the Big Sky Tournament (Mar. 15) ... Earned Big Sky All-Academic honors.

2011-12: One of only two true freshmen in the Big Sky Conference to start every single game in the 2011-12 season ... Earned Big Sky All-Academic honors for maintaining a minimum 3.20 grade point average ... Williams averaged 27.5 minutes per game, and tallied 137 points, 158 rebounds, 55 blocks, 39 assists and 31 steals as a rookie ... She had three double-digit scoring efforts, all of which were in Big Sky Conference play ... She had back-to-back 10-point performances against Northern Arizona (Jan. 7) and Sacramento State (Jan. 12), while grabbing 10 rebounds in the two games combined ... She had a career-high nine boards against perennial Big Sky power Montana (Jan. 2), and again at Sacramento State (Feb. 4) ... Williams made 5-of-7 field goals for a career-high 12 points in Eastern’s 75-67 win on the road against Portland State (Jan. 21) ... She also had six rebounds, two assists, two blocks and one steal in that game ... Williams improved her shooting efficiency from 39 percent in the non-conference season to 46 percent in league play, and had at least five rebounds in 11 of 16 Big Sky games.

High School: Four-year varsity letterwinner out of Camas High School ... Selected as the 2010 Greater St. Helen’s League Player of the Year and the Columbian’s All-Region Player of the Year ... Led her team to the Class 3A District Championship in 2010, averaging 16 points per game throughout the year ... The Papermakers earned that title after defeating rival Prairie 59-46 in a game where Williams had six assists and five steals ... Prior to being named GSHL Player of the Year, she earned all-league first-team honors as a sophomore and second-team accolades as a freshman ... Williams was also a three-year academic all-conference selection.

Personal: Daughter of Joe and Karen Williams ... Majoring in biology.


Williams'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
2011-12 30-30 825 27.5 61 142 .430 0 1 .000 15 22 .682 48 110 158 5.3 63 1 39 55 24 31 137 4.6
2012-13 29-13 657 22.7 55 120 .458 0 1 .000 27 35 .771 46 131 177 6.1 55 1 20 27 9 22 137 4.7
2013-14 30-19 757 25.2 78 175 .446 0 1 .000 24 31 .774 45 140 185 6.2 80 3 29 52 23 25 180 6.0
TOTAL 89-62 2239 25.2 194 437 .444 0 3 .000 66 88 .750 139 381 520 5.8 198 5 88 134 56 78 454 5.1
                                                 

Williams's Career Highs

Points: 23 at Idaho State (Mar. 6, 2014)                              
Rebounds: 13 vs. Butler (Nov. 30, 2013)                              
Assists: 5 at Idaho State (Mar. 3, 2012)                              
Steals: 4 vs. Portland State (Dec. 29, 2013)                              
Blocks: 4, 2x, last vs. Idaho State (Feb. 25, 2012)                              
FG Made: 9 at Idaho State (Mar. 6, 2014)                              
FG Attempts: 13 at Idaho State (Mar. 6, 2014)                              
3FG Made: -                              
3FG Attempts: 1, 3x, last vs. Idaho (Dec. 14, 2013)                              
FT Made: 5, 3x, last at Idaho State (Mar. 6, 2014)                              
FT Attempts: 7, 2x, last at Idaho State (Mar. 6, 2014)                              
Recent Games
Feb 24 at Portland St. W, 61-60
Feb 27 Northern Colo. W, 67-61
Mar 1 North Dakota L, 61-57
Mar 6 at Idaho St. L, 86-62
Mar 8 at Weber St. W, 68-60
Mar 13 vs. Idaho St. L, 70-65
Statistics category Overall Conf
Games 30 20
Games started 19 14
Minutes 757 516
Minutes per game 25.2 25.8
FG 78-175 53-110
FG Pct 44.6 48.2
3PT 0-1 0-0
3PT Pct 0.0 -
FT 24-31 17-20
FT Pct 77.4 85.0
Off rebounds 45 31
Def rebounds 140 97
Total rebounds 185 128
Rebounds per game 6.2 6.4
Personal fouls 80 59
Disqualifications 3 3
Assists 29 23
Turnovers 52 32
Assist to turnover ratio 0.6 0.7
Steals 25 18
Blocks 23 16
Points 180 123
Points per game 6.0 6.2
Points per 40 min 9.5 9.5
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 1 Master's College W, 87-74 - 6 0-0 - 0-0 - 0-0 - 0
Nov 8 at Portland L, 68-65 - 29 3-4 75.0 0-0 - 0-0 - 6
Nov 16 SMU L, 75-70 - 27 2-5 40.0 0-0 - 0-0 - 4
Nov 20 at Gonzaga L, 78-58 - 12 0-1 0.0 0-0 - 0-0 - 0
Nov 29 vs. Iowa St. L, 88-60 1 27 4-9 44.4 0-0 - 2-2 100.0 10
Nov 30 vs. Butler L, 74-51 1 35 4-12 33.3 0-0 - 0-0 - 8
Dec 6 Cal State Northridge W, 73-53 1 25 2-9 22.2 0-0 - 0-0 - 4
Dec 14 Idaho W, 85-84 1 12 1-3 33.3 0-1 0.0 1-3 33.3 3
Dec 17 Northwest (Wash) W, 90-48 - 14 3-6 50.0 0-0 - 0-0 - 6
Dec 20 Boise St. W, 81-66 - 23 3-4 75.0 0-0 - 0-0 - 6
Dec 29 Portland St. L, 86-74 - 28 3-9 33.3 0-0 - 0-0 - 6
Jan 2 Weber St. W, 78-67 - 25 0-3 0.0 0-0 - 0-0 - 0
Jan 4 Idaho St. W, 67-55 - 21 2-4 50.0 0-0 - 0-0 - 4
Jan 9 at Montana L, 81-64 - 26 3-4 75.0 0-0 - 2-2 100.0 8
Jan 11 at Montana St. L, 78-74 - 18 3-5 60.0 0-0 - 0-0 - 6
Jan 16 Northern Ariz. W, 92-68 1 12 0-1 0.0 0-0 - 0-1 0.0 0
Jan 18 Sacramento St. W, 78-65 1 25 5-10 50.0 0-0 - 0-0 - 10
Jan 25 at Southern Utah L, 62-61 1 17 0-1 0.0 0-0 - 0-0 - 0
Jan 30 at North Dakota L, 82-60 1 22 0-5 0.0 0-0 - 2-2 100.0 2
Feb 1 at Northern Colo. W, 52-51 1 32 2-5 40.0 0-0 - 2-2 100.0 6
Feb 6 Montana St. W, 81-66 1 31 5-9 55.6 0-0 - 2-2 100.0 12
Feb 8 Montana W, 71-61 1 34 5-7 71.4 0-0 - 0-0 - 10
Feb 13 at Sacramento St. W, 79-73 1 27 1-5 20.0 0-0 - 0-0 - 2
Feb 15 at Northern Ariz. L, 86-78 1 18 2-2 100.0 0-0 - 0-0 - 4
Feb 20 Southern Utah W, 59-54 1 35 4-5 80.0 0-0 - 0-0 - 8
Feb 24 at Portland St. W, 61-60 1 26 3-4 75.0 0-0 - 0-0 - 6
Feb 27 Northern Colo. W, 67-61 1 25 1-5 20.0 0-0 - 0-0 - 2
Mar 1 North Dakota L, 61-57 - 26 1-5 20.0 0-0 - 2-2 100.0 4
Mar 6 at Idaho St. L, 86-62 1 33 9-13 69.2 0-0 - 5-7 71.4 23
Mar 8 at Weber St. W, 68-60 1 35 4-8 50.0 0-0 - 2-2 100.0 10
Mar 13 vs. Idaho St. L, 70-65 1 37 3-12 25.0 0-0 - 4-6 66.7 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 - 6 0 0 0 0 0 - 0 0 4 0
Nov 8 at Portland L, 68-65 - 29 1 3 4 1 2 0.5 1 2 1 0
Nov 16 SMU L, 75-70 - 27 2 4 6 1 1 1.0 1 1 3 0
Nov 20 at Gonzaga L, 78-58 - 12 0 4 4 0 1 0.0 0 0 2 0
Nov 29 vs. Iowa St. L, 88-60 1 27 0 5 5 0 2 0.0 1 0 4 0
Nov 30 vs. Butler L, 74-51 1 35 3 10 13 1 3 0.3 1 1 3 0
Dec 6 Cal State Northridge W, 73-53 1 25 4 4 8 1 3 0.3 0 1 0 0
Dec 14 Idaho W, 85-84 1 12 1 2 3 0 3 0.0 1 0 0 0
Dec 17 Northwest (Wash) W, 90-48 - 14 1 6 7 1 0 - 2 0 3 0
Dec 20 Boise St. W, 81-66 - 23 1 4 5 0 2 0.0 0 1 2 0
Dec 29 Portland St. L, 86-74 - 28 0 5 5 1 0 - 4 0 2 0
Jan 2 Weber St. W, 78-67 - 25 2 5 7 2 3 0.7 1 0 3 0
Jan 4 Idaho St. W, 67-55 - 21 0 6 6 3 3 1.0 0 0 2 0
Jan 9 at Montana L, 81-64 - 26 1 5 6 2 1 2.0 1 2 5 1
Jan 11 at Montana St. L, 78-74 - 18 1 3 4 1 2 0.5 1 0 3 0
Jan 16 Northern Ariz. W, 92-68 1 12 1 2 3 0 1 0.0 0 0 1 0
Jan 18 Sacramento St. W, 78-65 1 25 2 2 4 1 1 1.0 1 0 3 0
Jan 25 at Southern Utah L, 62-61 1 17 1 2 3 0 2 0.0 0 2 4 0
Jan 30 at North Dakota L, 82-60 1 22 1 2 3 0 1 0.0 0 1 1 -
Feb 1 at Northern Colo. W, 52-51 1 32 4 6 10 3 1 3.0 0 0 2 -
Feb 6 Montana St. W, 81-66 1 31 3 8 11 1 3 0.3 2 0 4 -
Feb 8 Montana W, 71-61 1 34 3 7 10 0 0 - 2 1 3 -
Feb 13 at Sacramento St. W, 79-73 1 27 0 7 7 4 1 4.0 1 1 1 -
Feb 15 at Northern Ariz. L, 86-78 1 18 0 4 4 0 2 0.0 0 1 5 1
Feb 20 Southern Utah W, 59-54 1 35 2 6 8 0 1 0.0 2 3 3 -
Feb 24 at Portland St. W, 61-60 1 26 1 6 7 1 3 0.3 0 0 4 -
Feb 27 Northern Colo. W, 67-61 1 25 2 7 9 1 2 0.5 0 1 5 1
Mar 1 North Dakota L, 61-57 - 26 3 3 6 2 0 - 2 1 0 -
Mar 6 at Idaho St. L, 86-62 1 33 2 3 5 1 2 0.5 1 1 4 -
Mar 8 at Weber St. W, 68-60 1 35 2 8 10 0 3 0.0 0 2 4 -
Mar 13 vs. Idaho St. L, 70-65 1 37 1 1 2 1 3 0.3 0 1 3 -
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2012-13 29 13 22.7 1.9-4.1 45.8 0.0-0.0 0.0 0.9-1.2 77.1 4.7
2013-14 30 19 25.2 2.6-5.8 44.6 0.0-0.0 0.0 0.8-1.0 77.4 6.0
2014-15 33 33 30.9 4.5-9.2 49.3 0.0-0.2 20.0 1.3-1.8 73.3 10.4
Total 92 65 26.5 3.1-6.5 47.2 0.0-0.1 14.3 1.0-1.4 75.4 7.2
  gp gs min fg pct 3pt pct ft pct pts
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"))
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