21 Noah Yearsley
Noah Yearsley
  • Height:
    6'1
  • Year:
    2021
  • Hometown:
    Averill Park, NY
  • High School:
    Averill Park
  • Position:
    G
  • gp
    26
  • pts/g
    15.4
  • fg %
    42.0
  • 3pt %
    37.2
  • ft %
    65.5
  • reb/g
    4.4
  • a/g
    1.5

Bio

2017-18- Named the MASCAC Rookie of the Year after averaging 13.5 points for the Trailblazers.  Scored a career high 31 points in the MASCAC Semifinal round against Bridgewater State.  Posted double figures in seven of his final eight games.  Collected six rookie of the week awards and was tabbed MCLA's MVP following the season.

High School- Named Section 2 Exceptional Senior. Participated on Section 2 Class A All-Tournament team. Member of All-Area 3rd Team. Scored 30 points in  sectional championship game. Named season MVP. 

Son of Dan and Tara Yearsley.

Majoring in Business Management with a concentration in Marketing

Player Profile

Recent Games
Feb 8 at Salem St. L, 88-67
Feb 12 Framingham St. L, 67-64
Feb 15 Worcester St. L, 96-89
Feb 22 at Westfield St. L, 89-73
Feb 25 Fitchburg St. W, 80-78
Feb 27 at Worcester St. L, 96-72
  Overall Conf
Games 26 12
Games started 23 10
Minutes 767 371
Minutes per game 29.5 30.9
FG 139-331 65-164
FG Pct 42.0 39.6
3PT 67-180 25-82
3PT Pct 37.2 30.5
FT 55-84 20-34
FT Pct 65.5 58.8
Off rebounds 15 10
Def rebounds 99 52
Total rebounds 114 62
Rebounds per game 4.4 5.2
Personal fouls 59 29
Disqualifications 0 0
Assists 40 20
Turnovers 52 23
Assist to turnover ratio 0.8 0.9
Steals 24 10
Blocks 21 16
Points 400 175
Points per game 15.4 14.6
Points per 40 min 20.9 18.9

Game Log - Shooting

Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 8 at Northern Vermont-Johnson W, 77-63 - 22 7-16 43.8 4-10 40.0 3-4 75.0 21
Nov 9 vs. Northern Vermont-Lyndon L, 95-88 1 34 2-9 22.2 2-6 33.3 0-2 0.0 6
Nov 15 at Western New Eng. L, 91-63 1 20 2-9 22.2 1-6 16.7 4-6 66.7 9
Nov 16 vs. Medgar Evers W, 90-82 1 29 5-12 41.7 2-7 28.6 0-0 - 12
Nov 19 at Castleton W, 95-71 1 24 8-9 88.9 3-4 75.0 0-0 - 19
Nov 23 Becker L, 71-70 1 34 7-14 50.0 5-8 62.5 2-3 66.7 21
Nov 26 Williams L, 87-57 1 19 2-7 28.6 2-5 40.0 3-4 75.0 9
Dec 3 Sage W, 87-80 1 34 5-11 45.5 5-10 50.0 5-8 62.5 20
Dec 7 Rivier W, 92-69 1 22 5-11 45.5 1-4 25.0 2-2 100.0 13
Dec 10 at Elms W, 89-72 1 28 6-12 50.0 3-7 42.9 2-2 100.0 17
Jan 4 Norwich W, 95-76 1 32 8-13 61.5 1-3 33.3 2-2 100.0 19
Jan 11 at Bridgewater St. W, 74-68 1 33 6-15 40.0 3-6 50.0 1-2 50.0 16
Jan 14 Fitchburg St. W, 78-65 1 36 5-10 50.0 1-6 16.7 2-4 50.0 13
Jan 16 Salem St. W, 98-84 1 25 4-10 40.0 2-6 33.3 1-2 50.0 11
Jan 18 at Framingham St. W, 67-64 1 29 5-9 55.6 0-3 0.0 3-3 100.0 13
Jan 22 at Worcester St. W, 88-87 1 38 5-16 31.3 1-7 14.3 5-7 71.4 16
Jan 24 at Hunter L, 84-79 1 39 7-13 53.8 6-11 54.5 6-6 100.0 26
Jan 29 Westfield St. W, 82-81 1 39 6-17 35.3 5-12 41.7 1-4 25.0 18
Feb 1 Bridgewater St. L, 78-67 1 24 5-17 29.4 1-7 14.3 0-0 - 11
Feb 5 at Fitchburg St. W, 83-80 1 22 2-4 50.0 1-1 100.0 0-0 - 5
Feb 8 at Salem St. L, 88-67 1 33 5-13 38.5 0-4 0.0 5-8 62.5 15
Feb 12 Framingham St. L, 67-64 - 34 6-16 37.5 1-8 12.5 1-2 50.0 14
Feb 15 Worcester St. L, 96-89 - 33 8-14 57.1 5-9 55.6 0-0 - 21
Feb 22 at Westfield St. L, 89-73 1 25 8-23 34.8 5-13 38.5 1-2 50.0 22
Feb 25 Fitchburg St. W, 80-78 1 33 6-17 35.3 5-10 50.0 6-9 66.7 23
Feb 27 at Worcester St. L, 96-72 1 26 4-14 28.6 2-7 28.6 0-2 0.0 10

Game Log - Ball control

Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 8 at Northern Vermont-Johnson W, 77-63 - 22 0 3 3 0 3 0.0 0 0 2 0
Nov 9 vs. Northern Vermont-Lyndon L, 95-88 1 34 0 2 2 1 1 1.0 1 0 1 0
Nov 15 at Western New Eng. L, 91-63 1 20 0 3 3 0 1 0.0 1 0 2 -
Nov 16 vs. Medgar Evers W, 90-82 1 29 1 5 6 2 2 1.0 3 0 2 0
Nov 19 at Castleton W, 95-71 1 24 0 4 4 3 2 1.5 0 0 2 -
Nov 23 Becker L, 71-70 1 34 0 2 2 2 2 1.0 2 0 2 -
Nov 26 Williams L, 87-57 1 19 0 0 0 0 3 0.0 1 0 2 -
Dec 3 Sage W, 87-80 1 34 0 4 4 3 2 1.5 1 0 3 -
Dec 7 Rivier W, 92-69 1 22 1 5 6 2 0 - 0 1 2 -
Dec 10 at Elms W, 89-72 1 28 1 4 5 2 1 2.0 0 0 1 -
Jan 4 Norwich W, 95-76 1 32 1 3 4 2 2 1.0 3 2 2 -
Jan 11 at Bridgewater St. W, 74-68 1 33 1 4 5 3 1 3.0 2 0 1 0
Jan 14 Fitchburg St. W, 78-65 1 36 0 3 3 2 4 0.5 1 2 1 -
Jan 16 Salem St. W, 98-84 1 25 1 4 5 4 1 4.0 3 0 2 -
Jan 18 at Framingham St. W, 67-64 1 29 0 2 2 0 2 0.0 2 2 3 -
Jan 22 at Worcester St. W, 88-87 1 38 1 8 9 1 0 - 1 2 3 -
Jan 24 at Hunter L, 84-79 1 39 1 4 5 2 5 0.4 0 1 3 -
Jan 29 Westfield St. W, 82-81 1 39 1 2 3 0 3 0.0 1 3 4 -
Feb 1 Bridgewater St. L, 78-67 1 24 0 6 6 2 2 1.0 0 1 3 -
Feb 5 at Fitchburg St. W, 83-80 1 22 0 4 4 0 2 0.0 0 0 3 -
Feb 8 at Salem St. L, 88-67 1 33 2 7 9 3 1 3.0 0 1 3 -
Feb 12 Framingham St. L, 67-64 - 34 1 4 5 1 3 0.3 0 4 1 -
Feb 15 Worcester St. L, 96-89 - 33 3 4 7 2 1 2.0 0 0 1 -
Feb 22 at Westfield St. L, 89-73 1 25 0 4 4 2 3 0.7 0 1 4 -
Feb 25 Fitchburg St. W, 80-78 1 33 0 3 3 1 2 0.5 1 0 2 -
Feb 27 at Worcester St. L, 96-72 1 26 0 5 5 0 3 0.0 1 1 4 0

Career Stats - Shooting per game

  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2017-18 25 23 26.5 4.7-10.2 46.3 1.9-4.8 39.7 2.2-2.8 77.1 13.5
2019-20 26 23 29.5 5.3-12.7 42.0 2.6-6.9 37.2 2.1-3.2 65.5 15.4
Total 51 46 28.0 5.0-11.5 43.9 2.3-5.9 38.2 2.1-3.0 70.8 14.5

Career Stats - Shooting totals

  gp gs min fg pct 3pt pct ft pct pts
2017-18 25 23 663 118-255 46.3 48-121 39.7 54-70 77.1 338
2019-20 26 23 767 139-331 42.0 67-180 37.2 55-84 65.5 400
Total 51 46 1430 257-586 43.9 115-301 38.2 109-154 70.8 738

Career Stats - Shooting per 40 min

  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2017-18 25 23 26.5 7.1-15.4 46.3 2.9-7.3 39.7 3.3-4.2 77.1 20.4
2019-20 26 23 29.5 7.2-17.3 42.0 3.5-9.4 37.2 2.9-4.4 65.5 20.9
Total 51 46 28.0 7.2-16.4 43.9 3.2-8.4 38.2 3.0-4.3 70.8 20.6

Career Stats - Ball control per game

  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2017-18 25 23 26.5 0.4 3.0 3.3 2.2 0.0 1.8 2.4 0.8 1.0 0.8
2019-20 26 23 29.5 0.6 3.8 4.4 2.3 0.0 1.5 2.0 0.8 0.9 0.8
Total 51 46 28.0 0.5 3.4 3.9 2.2 0.0 1.7 2.2 0.8 0.9 0.8

Career Stats - Ball control totals

  gp gs min off def reb pf dq ast to a/to stl blk
2017-18 25 23 663 9 74 83 54 1 45 60 0.8 24 21
2019-20 26 23 767 15 99 114 59 0 40 52 0.8 24 21
Total 51 46 1430 24 173 197 113 1 85 112 0.8 48 42

Career Stats - Ball control per 40 min

  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2017-18 25 23 26.5 0.5 4.5 5.0 3.3 0.1 2.7 3.6 0.8 1.4 1.3
2019-20 26 23 29.5 0.8 5.2 5.9 3.1 0.0 2.1 2.7 0.8 1.3 1.1
Total 51 46 28.0 0.7 4.8 5.5 3.2 0.0 2.4 3.1 0.8 1.3 1.2

Splits Stats - Shooting per game

    gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Event Total 26 23 29.5 5.3-12.7 42.0 2.6-6.9 37.2 2.1-3.2 65.5 15.4
Conference 12 10 30.9 5.4-13.7 39.6 2.1-6.8 30.5 1.7-2.8 58.8 14.6
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -
Location Home 12 10 30.4 5.6-13.1 42.7 2.8-7.3 38.6 2.1-3.3 62.5 16.1
Away 12 11 28.3 5.4-12.8 42.5 2.4-6.6 36.7 2.5-3.5 71.4 15.8
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 315, column 17]
Page source:
1: <script src="${website.cdn("/info/klass.min.js")}"></script>
2: 
3: ## PICK UP OPTIONS
4: $website.include("options")
5: #set ($options = $request.getAttribute("options"))
6: #set ($locale = "en_us")
7: #set ($locale = $options.get("locale"))
8: 
9: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
10: #set ($bioObject = $page.getDataAsObject())
11: #set ($statsURL = $bioObject.statsURL)
12: 
13: #if ($statsURL.length() > 0)
14:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
15:   ## various settings to get the variables set
16:   #set ($events = $request.getAttribute("bio_events"))
17:   #set ($seasons = $request.getAttribute("bio_seasons"))
18:   #set ($career = $request.getAttribute("bio_career"))
19:   #set ($labels = $request.getAttribute("bio_labels"))
20:   #set ($briefs = $request.getAttribute("bio_briefs"))
21:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
22:   #set ($splits = $request.getAttribute("bio_splits"))
23:   #set ($statPosition = $request.getAttribute("bio_position"))
24:   #set ($positions = $request.getAttribute("bio_positions"))
25:   #set ($playerId = $request.getAttribute("bio_player_id"))
26:   #set ($highlights = $request.getAttribute("bio_highlights"))
27:   #set ($formats = $request.getAttribute("bio_formats"))
28:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
29:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
30:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
31:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
32: #end
33: 
34: #set ($pos = "")
35: #set ($pos = $attributes.get("position"))
36: #set ($pos = $statPosition)
37: #set ($posVec = $pos.split("/"))
38: #set ($pos = $posVec[0])
39: #set ($pos = $pos.toLowerCase())
40: #set ($statPos = $positions.get($pos))
41: #set ($paramPos = $request.getParameter("pos"))
42: 
43: #set ($playerId = $attributes.get("playerId"))
44: #set ($stats = $splits.overall)
45: #set ($highlights = $highlights.get($statPos))
46: 
47: #set ($showHighlights = true)
48: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
49: 	#set ($showHighlights = false)
50: #end
51: 
52: #set ($enhancedLayout = false)
53: #if (($options.get("bio_enhanced_layout") == "yes") || ($request.getParameter("bio_enhanced_layout") == true))
54: 	#set ($enhancedLayout = true)
55: #end
56: 
57: #set ($showActionShots = true)
58: #if ($options.get("bio_show_action_shots") && $options.get("bio_show_action_shots") == false)
59: 	#set ($showActionShots = false)
60: #end
61: 
62: #set ($actionShotsLimit = 5)
63: #set ($actionShotsLimit = $tool.math.toInteger($options.get("bio_action_shots_limit")))
64: 
65: #set ($showCareer = $wiki.valid() && $seasons)
66: #if ("yes" == $options.get("stats_show_career") && $seasons)
67:   #set ($showCareer = true)
68: #end
69: 
70: #set ($hasEvents = $events.size() > 0)
71: #set ($hasSynopsis = $synopsis.trim().length() > 0)
72: #set ($htmlStatsURL = "${page.url}-stats")
73: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
74: #set ($bioBriefURL = "${page.url}-brief")
75: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
76: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
77: #if ($options.get("bio_hide_roster") == true)
78:   #set ($showRoster = false)
79: #end
80: 
81: #set ($view = "")
82: #if ($hasSynopsis || $hasBioBrief)
83:   #set ($view = "bio")
84: #elseif ($statsURL.length() > 0)
85:   #set ($view = "profile")
86: #elseif ($hasHTMLStats)
87:   #set ($view = "htmlstats")
88: #elseif ($releases.size() > 0)
89:   #set ($view = "news")
90: #elseif ($playerPhotos.size() > 0)
91:   #set ($view = "photos")
92: #elseif ($playerVideos.size() > 0)
93:   #set ($view = "videos")
94: #end
95: 
96: #if ($options.get("bio_default_view").length() > 0)
97:     #set ($checkView = $options.get("bio_default_view"))
98: #else
99:     ## THIS ESTABLISHES A DEFAULT TAB FOR NEW BOOTSTRAP THEMES
100:     #if ($hasSynopsis || $hasBioBrief)
101:         #set ($checkView = "bio")
102:     #elseif ($statsURL.length() > 0)
103:         #set ($checkView = "profile")
104:     #elseif ($releases.size() > 0)
105:         #set ($checkView = "news")
106:     #end
107: #end
108: 
109: #if ($request.getParameter("view"))
110:   #set ($checkView = $request.getParameter("view"))
111: #end
112: 
113: #if ($checkView == "profile" && $statsURL.length() > 0)
114:   #set ($view = "profile")
115: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
116:   #set ($view = "bio")
117: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
118:   #set ($view = "gamelog")
119: #elseif ($checkView == "career" && $showCareer)
120:   #set ($view = "career")
121: #elseif ($checkView == "splits" && $statsURL.length() > 0)
122:   #set ($view = "splits")
123: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
124:   #set ($view = "htmlstats")
125: #elseif ($checkView == "news" && $releases.size() > 0)
126:   #set ($view = "news")
127: #elseif ($checkView == "photos" && $playerPhotos.size() > 0)
128:   #set ($view = "photos")
129: #elseif ($checkView == "videos" && $playerVideos.size() > 0)
130:     #set ($view = "videos")
131: #end
132: 
133: #macro (printResultAriaLabel $event)
134:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
135:     #if ($event.neutralSite.length() > 0 || $event.home)
136:     	#set ($ariaLabel = "${ariaLabel} vs.")
137:     #else
138:     	#set ($ariaLabel = "${ariaLabel} at")
139:     #end
140:     #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
141:     #if ($event.neutralSite.length() > 0)
142:     	#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
143:     #end
144:     #set ($ariaLabel = "${ariaLabel} Box Score")
145:     aria-label="$ariaLabel"
146: #end
147: 
148: #macro (printGrid $items $type)
149:     <div class="bio-news-mentions">
150:         <div class="card-columns">
151:             #foreach ($item in $items)
152:                 #if ($item.title.length() > 0)
153:                     <div class="card ${type}">
154:                         <a href="$item.url">
155:                             #if ($item.thumbnailURL)
156:                                 <img src="${item.thumbnailURL}?max_width=510" alt="$item.thumbnailAlt" class="card-img-top img-fluid" />
157:                             #elseif ($item.contentType == "loki/youtube")
158:                                 <img src="http://img.youtube.com/vi/${item.dataAsString}/mqdefault.jpg" alt="$item.thumbnailAlt" class="card-img-top img-fluid" />
159:                             #else
160:                                 #if ($website.exists("/images/setup/default-article-thumbnail.png"))
161:                                     <img src="/images/setup/default-article-thumbnail.png?max_width=510&max_height=287" class="card-img-top img-fluid" alt="$item.thumbnailAlt" />
162:                                 #else
163:                                     <img src="$website.cdn("/info/images/default-article-thumbnail.png?max_width=510&max_height=287")" class="card-img-top img-fluid" alt="$item.thumbnailAlt" />
164:                                 #end
165:                             #end
166:                         </a>
167:                         <div class="card-body">
168:                             <h5 class="card-title"><a href="$item.url">$item.title</a></h5>
169:                             #if ($item.leadIn.length() > 0)
170:                                 <p class="card-text">$formatter.limitLen(146, $item.leadIn)</p>
171:                             #end
172:                             #if ($item.date)
173:                                 <p class="card-text"><small class="text-muted">$formatter.formatLongDate($item.date)</small></p>
174:                             #end
175:                         </div>
176:                     </div>
177:                 #end
178:             #end ## foreach
179:         </div>
180:     </div>
181: #end ## ends macro
182: 
183: #macro (gamelogData $p)
184: 
185: #set ($p = $positions.get($p))
186: #set ($gamelogs = $gamelogs.get($p))
187: 
188: #if ($hasEvents)
189: <div class="stats-box full clearfix">
190:     <div class="table-responsive">
191:         <table class="table table-hover table-sm">
192:             <thead class="thead-dark">
193:                 <tr>
194:                     <th scope="col">Date</th>
195:                     <th scope="col" class="pinned-col">Opponent</th>
196:                     <th scope="col">Score</th>
197:                     #foreach ($gamelog in $gamelogs)
198:                       <th scope="col">$gamelog</th>
199:                     #end
200:                 </tr>
201:             </thead>
202:             <tbody>
203:                 #foreach ($event in $events)
204:                   <tr>
205:                     <td scope="row">$formatter.formatDate($event.event.date, "MMM d")</td>
206:                     <td class="pinned-col">
207:                       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
208:                       $event.event.opponent.name
209:                     </td>
210:                     <td>
211:                     #if ($event.event.statusCode >= 0)
212:                       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
213:                           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
214:                       #else
215:                       ${event.event.APResult}
216:                       #end
217:                     #else &nbsp; #end
218:                     </td>
219:                     #foreach ($gamelog in $gamelogs.keySet())
220:                       #set ($value = "-")
221:                       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
222:                       <td>$value</td>
223:                     #end
224:                   </tr>
225:                 #end
226:             </tbody>
227:         </table>
228:     </div> ## table-responsive
229: </div> ## stats-box
230: #end
231: 
232: #end ## macro gamelogData
233: 
234: #macro (split $statPosBriefs $label $stats $rowSpan $rowSpanLabel)
235:     <tr>
236:         #if ($tool.math.toInteger($rowSpan) > 0)
237:             <th rowspan="$rowSpan" scope="rowgroup">$rowSpanLabel</th>
238:         #end
239:         <th scope="row" class="pinned-col">${label}</th>
240:         #foreach ($brief in $statPosBriefs.keySet())
241:             #set ($value = "-")
242:             #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
243:             <td>#if ($value.length() > 0) $value #else - #end</td>
244:         #end
245:     </tr>
246: #end
247: 
248: #macro (careerData $p)
249: #set ($p = $positions.get($p))
250: #set ($statPosBriefs = $briefs.get($p))
251: 
252: <div class="stats-box full clearfix">
253:     <div class="table-responsive">
254:         <table class="table table-hover table-sm">
255:             <thead class="thead-dark">
256:                 <tr>
257:                     <th scope="col" class="pinned-col">&nbsp;</th>
258:                     #foreach ($brief in $statPosBriefs)
259:                         <th scope="col">$brief</th>
260:                     #end
261:                 </tr>
262:             </thead>
263:             <tbody>
264:                 #set ($careerTotals = $request.getAttribute("careerTotals"))
265:                 #set ($careerMap = $request.getAttribute("careerMap"))
266:                 #foreach ($season in $seasons)
267:                     ## Check if we did not get stats for this season
268:                     #if ($careerMap.get($season.seasonName))
269:                         #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
270:                         #split($statPosBriefs, $label, $careerMap[$season.seasonName], "", "")
271:                     #elseif ($wiki.valid())
272:                         <tr>
273:                             <td scope="row" class="text">${season.seasonName}</td>
274:                             <td colspan="${statPosBriefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
275:                         </tr>
276:                     #end
277:                 #end
278:                 #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall, "", "")
279:             </tbody>
280:         </table>
281:     </div> ## table-responsive
282: </div> ## stats-box
283: 
284: #end ## macro careerData
285: 
286: #macro (splitsData $p)
287: 
288: #set ($p = $positions.get($p))
289: #set ($statPosBriefs = $briefs.get($p))
290: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))
291: 
292: #if ($statPosBriefs.size() > 0)
293: <div class="stats-box full clearfix">
294:     <div class="table-responsive">
295:         <table class="table table-hover table-sm">
296:             <thead class="thead-dark">
297:                 <tr>
298:                     <th scope="col" class="pinned-col">&nbsp;</th>
299:                     <th scope="col" class="pinned-col">&nbsp;</th>
300:                     #foreach ($brief in $statPosBriefs)
301:                         <th scope="col">$brief</th>
302:                     #end
303:                 </tr>
304:             </thead>
305:                 
306:             <tbody>
307:                 #split($statPosBriefs, "Total", $splits.overall, "3", "Event")
308:                 #split($statPosBriefs, "Conference", $splits.conference, "", "")
309:                 #split($statPosBriefs, "Exhibition", $splits.exhibition, "", "")
310:             </tbody>
311: 
312:             <tbody>
313:                 #split($statPosBriefs, "Home", $splits.home, "3", "Location")
314:                 #split($statPosBriefs, "Away", $splits.away, "", "")
315:                 #split($statPosBriefs, "Neutral", $splits.neutral, "", "")
316:             </tbody>
317: 
318:             <tbody>
319:                 #set ($rowSpan = $gamesResults.entrySet().size()) 
320:                 #set ($rowSpanLabel = "Result") 
321: 
322:                 #foreach($gameResult in $gamesResults.entrySet())
323:                     #if ($gameResult.key == "wins")
324:                       #set ($splitGameResult = $splits.inWins)
325:                     #elseif ($gameResult.key == "losses")
326:                       #set ($splitGameResult = $splits.inLosses)
327:                     #elseif ($gameResult.key == "ties")
328:                       #set ($splitGameResult = $splits.inTies)
329:                     #end
330: 
331:                     #split($statPosBriefs, $gameResult.value, $splitGameResult, $rowSpan, $rowSpanLabel)
332: 
333:                     #set ($rowSpan = "") 
334:                 #end
335:             </tbody>
336: 
337:             #if ($monthsPlayed and $monthsPlayed.size() > 0)
338:                 <tbody>
339:                     #set ($rowSpan = $monthsPlayed.size()) 
340:                     #set ($rowSpanLabel = "Month") 
341: 
342:                     #foreach($month in $monthsPlayed)
343:                         #if ($month == 'January')
344:                           #set ($splitMonth = $splits.january)
345:                         #elseif ($month == 'February')
346:                           #set ($splitMonth = $splits.february)
347:                         #elseif ($month == 'March')
348:                           #set($splitMonth = $splits.march)
349:                         #elseif ($month == 'April')
350:                           #set($splitMonth = $splits.april)
351:                         #elseif ($month == 'May')
352:                           #set ($splitMonth = $splits.may)
353:                         #elseif ($month == 'June')
354:                           #set ($splitMonth = $splits.june)
355:                         #elseif ($month == 'July')
356:                           #set($splitMonth = $splits.july)
357:                         #elseif ($month == 'August')
358:                           #set ($splitMonth = $splits.august)
359:                         #elseif ($month == 'September')
360:                           #set($splitMonth = $splits.september)
361:                         #elseif ($month == 'October')
362:                           #set($splitMonth = $splits.october)
363:                         #elseif ($month == 'November')
364:                           #set ($splitMonth = $splits.november)
365:                         #elseif ($month == 'December')
366:                           #set($splitMonth = $splits.december)
367:                         #end
368: 
369:                         #split($statPosBriefs, $month, $splitMonth, $rowSpan, $rowSpanLabel)
370: 
371:                         #set ($rowSpan = "") 
372: 
373:                     #end ## foreach
374:                 </tbody>
375:             #end
376:         </table>
377:     </div> ## table-responsive
378: </div> ## stats-box
379: #end
380: 
381: #end ## macro splitsData
382: 
383: #macro (printRecentGames)
384: #if ($hasEvents)
385:     <div class="table-responsive">
386:         <table class="table table-hover table-sm">
387:             <thead class="thead-dark">
388:                 <tr><th colspan="3" scope="col">Recent Games</th></tr>
389:             </thead>
390:             <tbody>
391:                 #set ($eventEnd = -1)
392:                 #foreach ($event in $events)
393:                   #if ($event.event.result.resolved)
394:                     #set ($eventEnd = $velocityCount)
395:                   #end
396:                 #end
397: 
398:                 #set ($eventStart = $eventEnd - 5)
399:                 #if ($eventStart < 0) #set ($eventStart = 0) #end
400: 
401:                 #foreach ($event in $events)
402:                     #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
403:                         <tr>
404:                             <td scope="row">$formatter.formatDate($event.event.date, "MMM d")</td>
405:                             <td>
406:                                 #if ($event.event.neutralSite.length() > 0) vs.
407:                                 #elseif (!$event.event.home) at
408:                                 #else ## nothing for a home game
409:                                 #end
410:                                 $event.event.opponent.name
411:                             </td>
412:                             <td>
413:                                 #if ($event.event.statusCode >= 0)
414:                                     #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
415:                                         <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
416:                                     #else
417:                                         ${event.event.APResult}
418:                                     #end
419:                                 #end
420:                             </td>
421:                         </tr>
422:                     #end ## if
423:                 #end
424:             </tbody>
425:         </table>
426:     </div>
427: #end
428: #end ## macro printRecentGames
429: 
430: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
431:     <div class="$classTabPaneContent has-child-tabs">
432:         <div class="nav-tabs-wrapper position-relative overflow-hidden" data-module="jscroll" data-momentum="false">
433:             <div class="jscroll-inner">
434:                 <ul class="$classBioTabChildren" id="bio-tabs-$v" role="tablist">
435:                     #foreach($briefCat in $briefCategoryLabels.entrySet())
436:                         #set ($briefCatLabel = $briefCat.value)
437:                         #set ($briefCatKey = $briefCat.key)
438:                         #if ($locale == "en_gb" && $briefCatLabel == "Defense")
439:                             #set ($briefCatLabel = "Defence")
440:                         #end
441:                         <li class="nav-item">
442:                             <a data-toggle="tab" id="${v}-tab-pos-${briefCatKey}" class="nav-link#if ($activePos == $briefCatKey) active#end" data-target="#${v}-tab-pos-${briefCatKey}-content" href="${page.url}?view=${v}&pos=${briefCatKey}" aria-label="${ariaLabel}: ${briefCatLabel}">${briefCatLabel}</a>
443:                         </li>
444:                     #end
445:                 </ul>
446:             </div>
447:         </div>
448:         <div class="tab-content" id="${v}-tab-content">
449:             #foreach ($briefCat in $briefCategoryLabels.entrySet())
450:                 #set ($briefCatLabel = $briefCat.value)
451:                 #set ($briefCatKey = $briefCat.key)
452:                 #set ($class = "tab-panel")
453:                 #if ($briefCat.key == $activePos)
454:                    #set ($class = "tab-panel active show")
455:                 #end
456:                 <div class="tab-pane fade ${class}" id="${v}-tab-pos-${briefCatKey}-content" role="tabpanel" aria-labelledby="${v}-tab-pos-${briefCatKey}">
457:                     <div class="stats-wrap $classTabPaneContent">
458:                         <h4 class="bio-tabbed-content-heading">$ariaLabel - <small class="text-muted"> $briefCatLabel</small></h4>
459:                         #if ($v == "splits")
460:                             #splitsData($briefCat.key)
461:                         #elseif ($v == "career")
462:                             #careerData($briefCat.key)
463:                         #end
464:                     </div>
465:                 </div>
466:             #end
467:         </div>
468:     </div>
469: #end ## macro printCategories
470: 
471: #macro (printHeadshot)
472:         #if ($enhancedLayout)
473:             #set ($classPlayerPhoto = "img-fluid img-thumbnail")
474:         #else
475:             #set ($classPlayerPhoto = "img-fluid")
476:         #end
477:     
478:         #if ($headshot.url)
479:                 #set ($src = $headshot.url)
480:         #elseif ($website.exists("/images/setup/default-headshot.png"))
481:                 #set ($src = "/images/setup/default-headshot.png")
482:         #elseif ($website.exists("/images/setup/headshot_default.jpg"))
483:                 #set ($src = "/images/setup/headshot_default.jpg")
484:         #else
485:                 #set ($src = "/info/images/default-headshot.png")
486:         #end
487:         
488:         #if ($src.trim().length() > 0)
489:             <img src="$src?max_width=510&max_height=600" class="$classPlayerPhoto" alt="$fullName" />
490:         #end
491: #end ## macro printHeadshot
492: 
493: #macro (printBioInfo)
494: #if ($enhancedLayout)
495:     #set ($classListItems = "col-md-6 px-2")
496:     #set ($definitionListItems = "d-flex border-bottom m-0 p-2")
497: #else
498:     #set ($classListItems = "col-md-12 px-2")
499:     #set ($definitionListItems = "d-flex flex-column border-bottom m-0 p-2")
500: #end
501: 
502: #if ($enhancedLayout)
503:     <div class="player-heading h3 bg-primary d-flex align-content-stretch text-white position-relative z-index-1">
504:       #if ($!attributes.get("number").length() > 0)<span class="number bg-secondary inline-block text-white p-3">$!attributes.get("number")</span>#end
505:       <span class="name inline-block p-3">$fullName</span>
506:     </div>
507: #end
508: 
509: <div class="roster-player-fields">
510:     <ul class="d-flex flex-row flex-wrap justify-content-between list-unstyled">
511:         #foreach ($i in [1..10])
512:             #set ($stickyKey = "bio_custom${i}_sticky")
513:             #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
514:                 <li class="$classListItems bio-field-custom-sticky">
515:                     <dl class="${definitionListItems}">
516:                         <dt class="label p-0 mr-2">$options.get($stickyKey): </dt>
517:                         <dd class="value p-0 m-0">$!attributes.get("custom${i}")</dd>
518:                     </dl>
519:                 </li>
520:             #end
521:         #end
522: 
523:         #foreach ($field in $fields)
524:             #if (!$field.key.startsWith("custom"))
525:                 #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
526:                     #if ($field.key == "phone1" || $field.key == "phone2")
527:                         <li class="$classListItems bio-field-standard">
528:                             <dl class="${definitionListItems}">
529:                                 <dt class="label p-0 mr-2">Phone: </dt>
530:                                 <dd class="value p-0 m-0">$!attributes.get($field.key)</dd>
531:                             </dl>
532:                         </li>
533:                     #elseif ($field.key == "email_address")
534:                         <li class="$classListItems bio-field-standard">
535:                             <dl class="${definitionListItems}">
536:                                 #set ($emailAdd = $attributes.get($field.key))
537:                                 <dt class="label p-0 mr-2">Email: </dt>
538:                                 <dd class="value p-0 m-0 text-truncate"><a href="mailto:${emailAdd}">$emailAdd</a></dd>
539:                             </dl>
540:                         </li>
541:                     #elseif ($field.key == "weight_class")
542:                         <li class="$classListItems bio-field-standard">
543:                             <dl class="${definitionListItems}">
544:                                 <dt class="label p-0 mr-2">Class: </dt>
545:                                 <dd class="value p-0 m-0">$!attributes.get($field.key)</dd>
546:                             </dl>
547:                         </li>
548:                     #elseif ($field.key != "position_abbr")
549:                         <li class="$classListItems bio-field-standard">
550:                             <dl class="${definitionListItems}">
551:                                 <dt class="label p-0 mr-2">$field.value: </dt>
552:                                 <dd class="value p-0 m-0">$!attributes.get($field.key)</dd>
553:                             </dl>
554:                         </li>
555:                     #end
556:                 #end
557:             #end
558:         #end
559: 
560:         #foreach ($i in [1..10])
561:           #set ($customKey = "bio_custom${i}")
562:           #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
563:             <li class="$classListItems bio-field-custom">
564:                 <dl class="${definitionListItems}">
565:                     <dt class="label p-0 mr-2">$options.get($customKey): </dt>
566:                     <dd class="value p-0 m-0">$!attributes.get("custom${i}")</dd>
567:                 </dl>
568:             </li>
569:           #end
570:         #end
571:     </ul>
572: </div>
573: #end ## macro printBioInfo
574: 
575: #macro (printActionShots)
576: #if ($showActionShots)
577:     ## FILTERS OUT THE NUMBER OF ACTION PHOTOS 
578:     #set ($totalPhotoAvaiable = $playerPhotos.size())
579:     #set ($playerPhotosFiltered = $playerPhotos)
580:     #if ($actionShotsLimit < $totalPhotoAvaiable)
581:         #set ($playerPhotosFiltered = $playerPhotos.subList(0, $actionShotsLimit))
582:     #end
583:     #set ($playerPhotosFiltered = $tool.sorter.sort($playerPhotosFiltered, "lastUpdated:desc"))
584:     <div class="action-shots clearfix mb-md-n5 d-none d-sm-none d-md-block">
585:         <div id="action-shots-carousel" class="carousel slide carousel-fade" data-interval="12000" data-ride="carousel">
586:             <ol class="carousel-indicators pb-sm-3 mb-sm-5">
587:                 #foreach($photo in $playerPhotosFiltered)
588:                     <li data-target="#action-shots-carousel" data-slide-to="$foreach.index" class="#if ($foreach.index == 0)active#end"></li>
589:                 #end
590:             </ol>
591:             <div class="carousel-inner">
592:                 #foreach($photo in $playerPhotosFiltered)                    
593:                     #set ($imgAlt = "Large featured action photo of $fullName - Image $foreach.count")
594:                     #if ($photo.altText.length() > 0)
595:                         #set ($imgAlt = $photo.altText)
596:                     #elseif( $photo.title.length() > 0 )
597:                         #set ($imgAlt = $photo.title)
598:                     #end
599:                     <div class="carousel-item#if ($foreach.index == 0) active#end">
600:                         <img src="${photo.url}?max_width=1200" alt="$imgAlt" class="d-block w-100" data-lastupdated="$photo.lastUpdated" />
601:                     </div>
602:                 #end
603:             </div>
604:         </div>
605:     </div>
606: #end
607: #end ## macro printActionShots
608: 
609: #macro (printHighlights)
610: #if ($highlights && $showHighlights)
611:     <div class="roster-bio-highlights mt-3 bg-white">
612:         <ul class="d-flex flex-row flex-wrap justify-content-between list-unstyled m-0">
613:             #foreach ($highlight in $highlights.keySet())
614:                 #set ($value = "-")
615:                 #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
616:                 <li class="flex-fill px-2 text-center border border-white bg-primary text-white">
617:                     <dl class="stat d-block m-0 p-2">
618:                         <dt class="d-block label p-0 m-0 text-uppercase">$!highlights.get($highlight)</dt>
619:                         <dd class="d-block value p-0 m-0">$value</dd>
620:                     </dl>
621:                 </li>
622:             #end
623:         </ul>
624:     </div>
625: #end
626: #end ## macro printHighlights
627: 
628: #macro (printRoster)
629: #if ($enhancedLayout)
630:     $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list")
631: #else
632:     #set ($id = "roster-switcher")
633:     #if ($request.getParameter("id").length() > 0)
634:         #set ($id = $request.getParameter("id"))
635:     #end
636: 
637:     #if ($page.contentType == "loki/bio")
638:         #set ($headlinesFeaturedSize = 0)
639:         #foreach ($featuredPage in $page.headlinesFeatured)
640:             #if ($featuredPage.contentType == "loki/headlines")
641:                 #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
642:             #end
643:         #end
644:         #if ($headlinesFeaturedSize > 0)
645:             <div id="$id" class="float-sm-right roster-switcher-template">
646:                 <div class="input-group mb-3">
647:                     <div class="input-group-prepend">
648:                         <label class="input-group-text" for="$id-options">Related Bios</label>
649:                     </div>
650:                     <select class="custom-select" id="$id-options" onchange="location=this.value;">
651:                         #foreach ($featuredPage in $page.headlinesFeatured)
652:                             #if ($featuredPage.contentType == "loki/headlines")
653:                                 $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
654:                             #end
655:                         #end
656:                     </select>
657:                 </div>
658:             </div>
659:         #end
660:     #elseif ($page.contentType == "loki/bio-network")
661:         #set ($relatedPlayers = $page.sectionPage.children)
662:         #set ($teamNames = {})
663:         #foreach ($relatedPlayer in $relatedPlayers)
664:             #if ($relatedPlayer.contentType == "loki/bio-network")
665:                 #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
666:                 #set ($teamName = $relatedPlayerObj.get("team"))
667:                 #if ($teamName.length() > 0)
668:                     #if (!$teamNames.containsValue($teamName))
669:                         $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
670:                     #end
671:                 #end
672:             #end
673:         #end
674:         <div id="$id" class="float-sm-right roster-switcher-template">
675:             <div class="input-group mb-3">
676:                 <div class="input-group-prepend">
677:                     <label class="input-group-text" for="$id-options">Related Bios</label>
678:                 </div>
679:                 <select class="custom-select" id="$id-options" onchange="location=this.value;">
680:                     #foreach ($i in [1..$teamNames.size()])
681:                         #if ($teamNames.size() > 1)
682:                             <optgroup label="$teamNames.get($i)">
683:                         #end
684: 
685:                         #foreach ($relatedPlayer in $relatedPlayers)
686:                             #if ($relatedPlayer.contentType == "loki/bio-network")
687:                                 #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
688:                                 #set ($teamName = $relatedPlayerObj.get("team"))
689:                                 #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
690:                                     #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
691:                                     #set ($playerLastName = $relatedPlayerObj.get("last_name"))
692:                                     <option value="$relatedPlayer.url" #if ($page.url == $relatedPlayer.url)selected#end>${playerFirstName} ${playerLastName}</option>
693:                                 #end
694:                             #end
695:                         #end
696: 
697:                         #if ($teamNames.size() > 1)
698:                             </optgroup>
699:                         #end
700:                     #end
701:                 </select>
702:             </div>
703:         </div>
704:     #end
705: #end ## enhancedLayout check
706: #end ## macro printRoster
707: 
708: ################################################## END MACROS  #############################################################
709: 
710: #if ($attributes.get("full_name").length() > 0)
711:   #set ($fullName = $attributes.get("full_name"))
712: #else
713:   #set ($firstName = $!attributes.get("first_name"))
714:   #set ($lastName = $!attributes.get("last_name"))
715:   #set ($fullName = "${firstName} ${lastName}")
716: #end
717: 
718: #set ($pageTitle = "")
719: #if($request.getAttribute("pageTitle").length() > 0)
720:         #set ($pageTitle = $request.getAttribute("pageTitle"))
721: #end
722: #if ($page.title.length() > 0)
723:         #set ($pageTitle = $!page.title)
724: #end
725: $!request.setAttribute("pageTitle", "${pageTitle}")
726: 
727: #set ($actionShots = false)
728: #if ($enhancedLayout && $playerPhotos.size() > 0)
729:   #set ($actionShots = true)
730: #end
731: 
732: #if ($enhancedLayout)
733:     #set ($classRoot = "bio-enhanced")
734:     #if ($actionShots && $showActionShots)
735:           #set ($classRoot = "${classRoot} action")
736:     #else
737:           #set ($classRoot = "${classRoot} plain")
738:     #end
739:     #set ($classCard = "mb-5 bg-light p-3 col-sm-12 pt-md-0")
740:     #set ($classBody = "col-sm-12")
741:     #set ($classBioTabParents = "nav nav-pills d-flex flex-row text-nowrap justify-content-center py-3 border-top border-bottom")
742:     #set ($classBioTabChildren = "nav nav-pills d-flex flex-row text-nowrap justify-content-center py-3 border-bottom")
743:     #set ($classTabPaneContent = "tab-pane-contents py-3")
744: #else
745:     #set ($classRoot = "bio-wrap")
746:     #set ($classCard = "mb-5 p-3 col-lg-4 col-xl-3 bg-light")
747:     #set ($classBody = "col-lg-8 col-xl-9")
748:     #set ($classBioTabParents = "nav nav-tabs d-flex flex-column flex-sm-row text-center justify-content-start")
749:     #set ($classBioTabChildren = "nav nav-tabs d-flex flex-column flex-sm-row text-center justify-content-start")
750:     #set ($classTabPaneContent = "tab-pane-contents p-3")
751:     
752: #end
753: 
754: ## FULL ROSTER
755: <div class="${classRoot} #if ($highlights) bio-wrap-has-highlights #end clearfix">
756: 
757: ## RELATED BIOS
758: #if ($showRoster)
759:   <div class="related-bios clearfix">#printRoster</div>
760: #end
761: 
762: #if ($actionShots)
763:   #printActionShots
764: #end
765: #if ($enhancedLayout)
766: #else
767:     <div class="player-heading h3 d-flex align-content-stretch position-relative z-index-1 mb-3 bg-primary text-white border">
768:         #if ($!attributes.get("number").length() > 0)<span class="number bg-secondary inline-block text-white p-3">$!attributes.get("number")</span>#end
769:         <span class="name inline-block p-3">$fullName</span>
770:     </div>
771: #end
772: 
773: <div class="container">
774:     <div class="row">
775:         <div class="bio-card ${classCard}">
776:             <div class="player-about clearfix">
777:                 #if ($enhancedLayout)
778:                     <div class="row no-gutters">
779:                         <div class="col-md-4 col-lg-3">
780:                             <div class="player-headshot text-center position-relative z-index-1 mt-md-n5">#printHeadshot</div>
781:                         </div>
782:                         <div class="col-md-8 col-lg-9">
783:                             <div class="player-info">#printBioInfo</div>
784:                         </div>
785:                     </div>
786:                 #else
787:                     <div class="row">
788:                         <div class="col-md-4 col-lg-12">
789:                             <div class="player-headshot text-center position-relative z-index-1 mb-3">#printHeadshot</div>
790:                         </div>
791:                         <div class="col-md-8 col-lg-12">
792:                             <div class="player-info mb-3">#printBioInfo</div>
793:                         </div>
794:                     </div>
795:                 #end
796:             </div>
797:             #printHighlights
798:         </div> ## bio-card
799: 
800:         #if ($view.length() > 0)
801:             <div class="bio-body ${classBody}">
802:                 <div class="tab-container">
803:                 #if ($statsURL.length() > 0 || $hasHTMLStats || $releases.size() > 0|| $playerPhotos.size() > 0 || $playerVideos.size() > 0)
804:                     <div class="nav-tabs-wrapper position-relative overflow-hidden" data-module="jscroll" data-momentum="false">
805:                         <div class="jscroll-inner">
806:                             <ul class="$classBioTabParents" id="bio-tabs-parents" role="tablist">
807:                                 #if ($hasSynopsis || $hasBioBrief)
808:                                     <li class="nav-item">
809:                                         <a data-toggle="tab" id="bio-tab" class="nav-link #if ($view == "bio") active#end" data-target="#bio" href="${page.url}?view=bio">Bio</a>
810:                                     </li>
811:                                 #end
812: 
813:                                 #if ($statsURL.length() > 0)
814:                                     <li class="nav-item">
815:                                         <a data-toggle="tab" id="profile-tab" class="nav-link#if ($view == "profile") active#end" data-target="#profile" href="${page.url}?view=profile">Player Profile</a>
816:                                     </li>
817:                                     <li class="nav-item">
818:                                         <a data-toggle="tab" id="gamelog-tab" class="nav-link#if ($view == "gamelog") active#end" data-target="#gamelog" href="${page.url}?view=gamelog">Game Log</a>
819:                                     </li>
820:                                     #if ($showCareer)
821:                                         <li class="nav-item">
822:                                             <a data-toggle="tab" id="career-tab" class="nav-link#if ($view == "career") active#end" data-target="#career" href="${page.url}?view=career">Career Stats</a>
823:                                         </li>
824:                                     #end
825:                                     <li class="nav-item">
826:                                         <a data-toggle="tab" id="splits-tab" class="nav-link#if ($view == "splits") active#end" data-target="#splits" href="${page.url}?view=splits">Split Stats</a>
827:                                     </li>
828:                                 #end
829: 
830:                                 #if ($hasHTMLStats)
831:                                     <li class="nav-item">
832:                                         <a data-toggle="tab" id="htmlstats-tab" class="nav-link#if ($view == "htmlstats") active#end" data-target="#htmlstats" href="${page.url}?view=htmlstats">HTML Stats</a>
833:                                     </li>
834:                                 #end
835: 
836:                                 #if ($releases.size() > 0)
837:                                     <li class="nav-item">
838:                                         <a data-toggle="tab" id="news-tab" class="nav-link#if ($view == "news") active#end" data-target="#news" href="${page.url}?view=news">News</a>
839:                                     </li>
840:                                 #end
841: 
842:                                 #if ($playerPhotos.size() > 0)
843:                                     <li class="nav-item">
844:                                         <a data-toggle="tab" id="photos-tab" class="nav-link#if ($view == "photos") active#end" data-target="#photos" href="${page.url}?view=photos">Photos</a>
845:                                     </li>
846:                                 #end
847: 
848:                                 #if ($playerVideos.size() > 0)
849:                                     <li class="nav-item">
850:                                         <a data-toggle="tab" id="videos-tab" class="nav-link#if ($view == "videos") active#end" data-target="#videos" href="${page.url}?view=videos">Videos</a>
851:                                     </li>
852:                                 #end
853:                             </ul>   
854:                         </div>
855:                     </div>
856:                 #end
857:                     <div class="tab-content" id="roster-tab-content">
858:                         ## BIO
859:                         #if ($hasSynopsis || $hasBioBrief)
860:                             #set ($class = "tab-panel")
861:                             #if ($view == "bio")
862:                                #set ($class = "tab-panel active show")
863:                             #end
864: 
865:                             <div class="tab-pane fade ${class}" id="bio" role="tabpanel" aria-labelledby="bio-tab">
866:                                 <div class="$classTabPaneContent synopsis">
867:                                     <h4 class="bio-tabbed-content-heading">Bio</h4>
868:                                     #if ($hasSynopsis)
869:                                       $synopsis
870:                                     #elseif ($hasBioBrief)
871:                                       $website.include("$bioBriefURL")
872:                                     #end
873:                                 </div>
874:                             </div> ## tab-panel
875:                         #end
876: 
877:                         ## STATS
878:                         #if ($statsURL.length() > 0)
879: 
880:                             ## PROFILE
881:                             #set ($class = "tab-panel")
882:                             #if ($view == "profile")
883:                                #set ($class = "tab-panel active show")
884:                             #end
885: 
886:                             <div class="tab-pane fade ${class}" id="profile" role="tabpanel" aria-labelledby="profile-tab">
887:                                 <div class="$classTabPaneContent stats-wrap">
888:                                     <h4 class="bio-tabbed-content-heading">Player Profile</h4>
889:                                     ## LAST SIX GAMES
890:                                     <div class="row">
891:                                         <div class="stats-box col-12">
892:                                             #printRecentGames()
893:                                         </div>
894: 
895:                                         ## RANKING
896:                                         <div class="stats-box col-12">
897:                                             #if ($statPos.length() > 0)
898:                                                 $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
899:                                             #end
900:                                         </div>
901:                                     </div>
902:                                 </div> ## stats-wrap
903:                             </div> ## tab-content
904: 
905:                             ## GAMELOG
906:                             #set ($class = "tab-panel")
907:                             #if ($view == "gamelog")
908:                                #set ($class = "tab-panel active show")
909:                             #end
910: 
911:                             #set ($activePos = $statPos)
912:                             #if ($view == "gamelog" && $paramPos.length() > 0)
913:                                 #if ($positions.get($paramPos).length() > 0)
914:                                     #set ($activePos = $positions.get($paramPos))
915:                                 #end
916:                             #end
917: 
918:                             <div class="tab-pane fade ${class}" id="gamelog" role="tabpanel" aria-labelledby="gamelog-tab">
919:                                 #if ($gamelogsCategoriesLabels)
920:                                     <div class="$classTabPaneContent has-child-tabs">
921:                                         <div class="nav-tabs-wrapper position-relative overflow-hidden" data-module="jscroll" data-momentum="false">
922:                                             <div class="jscroll-inner">
923:                                                 <ul class="$classBioTabChildren" id="bio-tabs-gamelog" role="tablist">
924:                                                     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
925:                                                         #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
926:                                                         #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
927:                                                             #set($gamelogsCatLabelVal = "Defence")
928:                                                         #end
929:                                                         <li class="nav-item">
930:                                                             <a data-toggle="tab" id="gamelog-tab-pos-${gamelogsCatLabel.key}" class="nav-link#if ($activePos == $gamelogsCatLabel.key) active#end" data-target="#gamelog-tab-pos-${gamelogsCatLabel.key}-content" href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a>
931:                                                         </li>
932:                                                     #end
933:                                                 </ul>
934:                                             </div>
935:                                         </div>
936:                                         <div class="tab-content" id="gamelog-tab-content">
937:                                             #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
938:                                                 #set ($class = "tab-panel")
939:                                                 #if ($gamelogsCatLabel.key == $activePos)
940:                                                    #set ($class = "tab-panel active show")
941:                                                 #end
942:                                                 <div class="tab-pane fade ${class}" id="gamelog-tab-pos-${gamelogsCatLabel.key}-content" role="tabpanel" aria-labelledby="gamelog-tab-pos-${gamelogsCatLabel.key}">
943:                                                     <div class="stats-wrap $classTabPaneContent">
944:                                                          <h4 class="bio-tabbed-content-heading">Game Log - <small class="text-muted"> $gamelogsCatLabel.value</small></h4></h4>
945:                                                         #gamelogData($gamelogsCatLabel.key)
946:                                                     </div>
947:                                                 </div>
948:                                             #end
949:                                         </div>
950:                                     </div>
951:                                 #else
952:                                     <div class="stats-wrap $classTabPaneContent">#gamelogData($pos)</div>
953:                                 #end
954: 
955:                             </div> ## tab-panel
956: 
957:                             ## CAREER
958:                             #if ($showCareer)
959: 
960:                                 #set ($activePos = $statPos)
961:                                 #if ($view == "career" && $paramPos.length() > 0)
962:                                     #if ($positions.get($paramPos).length() > 0)
963:                                         #set ($activePos = $positions.get($paramPos))
964:                                     #end
965:                                 #end
966: 
967:                                 #set ($class = "tab-panel")
968:                                 #if ($view == "career")
969:                                    #set ($class = "tab-panel active show")
970:                                 #end
971: 
972:                                 <div class="tab-pane fade ${class}" id="career" role="tabpanel" aria-labelledby="career-tab">
973:                                     #if ($briefsCategoriesLabels)
974:                                         #printCategories($briefsCategoriesLabels "career" "Career Stats")
975:                                     #else
976:                                         <div class="stats-wrap $classTabPaneContent">#careerData($activePos)</div>
977:                                     #end
978:                                 </div>
979:                             #end
980: 
981:                             ## SPLITS
982:                             #set ($class = "tab-panel clearfix")
983:                             #if ($view == "splits")
984:                                #set ($class = "tab-panel active show")
985:                             #end
986: 
987:                             #set ($activePos = $statPos)
988:                             #if ($view == "splits" && $paramPos.length() > 0)
989:                                 #if ($positions.get($paramPos).length() > 0)
990:                                     #set ($activePos = $positions.get($paramPos))
991:                                 #end
992:                             #end
993: 
994:                             <div class="tab-pane fade ${class}" id="splits" role="tabpanel" aria-labelledby="splits-tab">
995:                                 #if ($briefsCategoriesLabels)
996:                                     #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
997:                                 #else
998:                                     <div class="stats-wrap $classTabPaneContent">#splitsData($pos)</div>
999:                                 #end
1000:                             </div>
1001:                         #end
1002: 
1003:                         ## HTML STATS
1004:                         #if ($hasHTMLStats)
1005:                             #set ($class = "tab-panel clearfix")
1006:                             #if ($view == "htmlstats")
1007:                                #set ($class = "tab-panel active show")
1008:                             #end
1009:                             <div class="tab-pane fade ${class}" id="htmlstats" role="tabpanel" aria-labelledby="htmlstats-tab">
1010:                                 <div class="$classTabPaneContent">
1011:                                     <h4 class="bio-tabbed-content-heading">Other Stats</h4>
1012:                                     <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
1013:                                 </div>
1014:                             </div>
1015:                         #end
1016: 
1017:                         ## NEWS
1018:                         #if ($releases.size() > 0)
1019:                             #set ($class = "tab-panel clearfix")
1020:                             #if ($view == "news")
1021:                                #set ($class = "tab-panel active show")
1022:                             #end
1023:                             <div class="tab-pane fade ${class}" id="news" role="tabpanel" aria-labelledby="news-tab">
1024:                                 <div class="$classTabPaneContent">
1025:                                     <h4 class="bio-tabbed-content-heading">News Mentions</h4>
1026:                                     #printGrid($releases, "article")
1027:                                 </div>
1028:                             </div>
1029:                         #end
1030: 
1031:                         ## PHOTOS
1032:                         #if ($playerPhotos.size() > 0)
1033:                             #set ($class = "tab-panel clearfix")
1034:                             #if ($view == "photos")
1035:                                 #set ($class = "tab-panel active clearfix")
1036:                             #end
1037:                             <div class="tab-pane fade ${class}" id="photos" role="tabpanel" aria-labelledby="photos-tab">
1038:                                 <div class="$classTabPaneContent">
1039:                                     <h4 class="bio-tabbed-content-heading">Photos</h4>
1040:                                     $website.includeAgain("${page.url}?tmpl=bio-photos-template")
1041:                                 </div>
1042:                             </div>
1043:                         #end
1044: 
1045:                         ## VIDEOS
1046:                         #if ($playerVideos.size() > 0)
1047:                             #set ($class = "tab-panel clearfix")
1048:                             #if ($view == "videos")
1049:                                 #set ($class = "tab-panel active clearfix")
1050:                             #end
1051:                             <div class="tab-pane fade ${class}" id="videos" role="tabpanel" aria-labelledby="videos-tab">
1052:                                 <div class="$classTabPaneContent">
1053:                                     <h4 class="bio-tabbed-content-heading">Videos</h4>
1054:                                     #printGrid($playerVideos, "video")
1055:                                 </div>
1056:                             </div>
1057:                         #end
1058: 
1059:                     </div> ## tab-panels
1060:                 </div> ## tab-container
1061:             </div> ## body
1062:         #end
1063:     </div>
1064: </div>
1065: 
1066: $wiki
1067: </div> ## ends bio-wrap
1068: 
1069: ## GLOBAL ADS SERVER
1070: #if ($website.ads.isAdvertisingEnabled('BIOS'))
1071:         $website.includeAgain("global-adserver-slots?adSlot=bios")
1072: #end