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: #set ($showconf = true)
8: #if ($options.get("stats_hide_conference") and $options.get("stats_hide_conference").equalsIgnoreCase("hide"))
9: #set ($showconf = false)
10: #end
11:
12: #set ($showCareer = $wiki.valid() && $seasons)
13: #if ("yes" == $options.get("stats_show_career") && $seasons)
14: #set ($showCareer = "yes")
15: #end
16:
17: #if ($locale == "en_us")
18: #set ($defLabel = "Defense")
19: #elseif ($locale == "en_gb")
20: #set ($defLabel = "Defence")
21: #end
22:
23: #set ($pos = "")
24: #set ($pos = $attributes.get("position"))
25: #set ($posVec = $pos.split("/"))
26: #set ($pos = $posVec[0])
27: #set ($pos = $pos.toLowerCase())
28:
29: #set ($statPos = $positions.get($pos))
30: #set ($paramPos = $request.getParameter("pos").toLowerCase())
31:
32: #*
33: $positions
34: $positions.keySet()
35: $positions.entrySet()
36: $statPos
37: $paramPos
38: *#
39:
40: #set ($highlights = $highlights.get($statPos))
41:
42: #set ($url = ${page.url})
43: #set ($playerId = $attributes.get("playerId"))
44: #set ($stats = $splits.overall)
45:
46: #set ($hasEvents = $events.size() > 0)
47: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
48: #set ($htmlStatsURL = "${page.url}-stats")
49: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
50: #set ($bioBriefURL = "${page.url}-brief")
51: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
52:
53: $request.setAttribute("careerTotals", $career)
54: ## We track a map of the careers to see if we are missing any seasons
55: #set ($careerMap = {})
56: $request.setAttribute("careerMap", $careerMap)
57: #foreach ($season in $seasons)
58: ## We need to include this season stats
59: #set ($path = "${season.path}?tmpl=bio-career-template&name=${season.seasonName}&pos=${statPos}&print=no")
60: $website.includeAgain($path)
61: #end
62:
63: #set ($view = "profile")
64: #if ($request.getParameter("view"))
65: #set ($view = $request.getParameter("view"))
66: #end
67:
68: #macro (printResultAriaLabel $event)
69: #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
70: #if ($event.neutralSite.length() > 0 || $event.home)
71: #set ($ariaLabel = "${ariaLabel} vs.")
72: #else
73: #set ($ariaLabel = "${ariaLabel} at")
74: #end
75: #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
76: #if ($event.neutralSite.length() > 0)
77: #set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
78: #end
79: #set ($ariaLabel = "${ariaLabel} Box Score")
80: aria-label="$ariaLabel"
81: #end
82:
83: #macro (printHighlights)
84: #if ($highlights)
85: <div class="highlights highlights-standalone accent-bg">
86: #foreach ($highlight in $highlights.keySet())
87: #set ($value = "-")
88: #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
89: <div class="stat clearfix">
90: <span class="stat-title">$!highlights.get($highlight)</span>
91: <span class="stat-value">$value</span>
92: </div>
93: #end
94: </div>
95: #end ## has highlights
96: #end ## macro printHighlights
97:
98: #macro (splitBioNetwork $statPosBriefs $label $stats)
99: <tr>
100: <td class="pinned-col text">${label}</td>
101: #foreach ($brief in $statPosBriefs.keySet())
102: #set ($value = "-")
103: #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
104: <td>#if ($value.length() > 0) $value #else - #end</td>
105: #end
106: </tr>
107: #end ## marco split
108:
109: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
110:
111: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
112: <div class="tab-nav" data-module="jscroll" data-momentum="false">
113: <div>
114: <ul class="clearfix">
115: #foreach($briefCat in $briefCategoryLabels.entrySet())
116: #set ($briefCatLabel = $briefCat.value)
117: #set ($briefCatKey = $briefCat.key)
118:
119: #if ($locale == "en_gb" && $briefCatLabel == "Defense")
120: #set ($briefCatLabel = "Defence")
121: #end
122:
123: <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}" role="tab" id="stats-tab-${ariaLabel.toLowerCase().replace(" ", "-")}-${briefCatLabel.toLowerCase()}" aria-label="${ariaLabel}: ${briefCatLabel}">$briefCatLabel</a></li>
124: #end
125: </ul>
126: </div>
127: </div>
128: <div class="tab-panels">
129: #foreach ($briefCat in $briefCategoryLabels.entrySet())
130: #set ($briefCatLabel = $briefCat.value)
131: #set ($class = "tab-panel clearfix")
132: #if ($briefCat.key == $activePos)
133: #set ($class = "tab-panel active clearfix")
134: #end
135: <div class="$class" role="tabpanel" aria-labelledby="stats-tab-${ariaLabel.toLowerCase().replace(" ", "-")}-${briefCatLabel.toLowerCase()}">
136: <div class="stats-wrap clearfix">
137: #if ($v == "splits")
138: #splitsBioNetworkData($briefCat.key)
139: #elseif ($v == "career")
140: #careerData($briefCat.key)
141: #end
142: </div>
143: </div>
144: #end
145: </div>
146: </div> ## tab-container
147:
148: #end ## macro printCategories
149:
150: #macro (splitsBioNetworkData $p)
151:
152: #set ($p = $positions.get($p))
153: #set ($statPosBriefs = $briefs.get($p))
154: #set ($colspan = $statPosBriefs.size())
155:
156: <div class="stats-box full clearfix">
157: <div class="scrollable">
158: <div>
159: <table>
160: <tr class="accent-bg">
161: <th class="pinned-col"> </th>
162: #foreach ($brief in $statPosBriefs)
163: <th>$brief</th>
164: #end
165: </tr>
166:
167: #splitBioNetwork($statPosBriefs, "Total", $splits.overall)
168: #if ($showconf)
169: #splitBioNetwork($statPosBriefs, "Conference", $splits.conference)
170: #end
171: #splitBioNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
172:
173: <tr class="empty-row">
174: <td class="pinned-col"> </td>
175: <td colspan="$colspan"><div class="empty-cell">-</div></td>
176: </tr>
177:
178: #splitBioNetwork($statPosBriefs, "Home", $splits.home)
179: #splitBioNetwork($statPosBriefs, "Away", $splits.away)
180: #splitBioNetwork($statPosBriefs, "Neutral", $splits.neutral)
181:
182: <tr class="empty-row">
183: <td class="pinned-col"> </td>
184: <td colspan="$colspan"><div class="empty-cell">-</div></td>
185: </tr>
186:
187: #foreach($gameResult in $gamesResults.entrySet())
188: #if ($gameResult.key == "wins")
189: #set ($splitGameResult = $splits.inWins)
190: #elseif ($gameResult.key == "losses")
191: #set ($splitGameResult = $splits.inLosses)
192: #elseif ($gameResult.key == "ties")
193: #set ($splitGameResult = $splits.inTies)
194: #end
195:
196: #splitBioNetwork($statPosBriefs, $gameResult.value, $splitGameResult)
197: #end
198:
199: <tr class="empty-row">
200: <td class="pinned-col"> </td>
201: <td colspan="$colspan"><div class="empty-cell">-</div></td>
202: </tr>
203:
204: #if ($monthsPlayed and $monthsPlayed.size() > 0)
205: #foreach($month in $monthsPlayed)
206: #if ($month == 'January')
207: #set ($splitMonth = $splits.january)
208: #elseif ($month == 'February')
209: #set ($splitMonth = $splits.february)
210: #elseif ($month == 'March')
211: #set($splitMonth = $splits.march)
212: #elseif ($month == 'April')
213: #set($splitMonth = $splits.april)
214: #elseif ($month == 'May')
215: #set ($splitMonth = $splits.may)
216: #elseif ($month == 'June')
217: #set ($splitMonth = $splits.june)
218: #elseif ($month == 'July')
219: #set($splitMonth = $splits.july)
220: #elseif ($month == 'August')
221: #set ($splitMonth = $splits.august)
222: #elseif ($month == 'September')
223: #set($splitMonth = $splits.september)
224: #elseif ($month == 'October')
225: #set($splitMonth = $splits.october)
226: #elseif ($month == 'November')
227: #set ($splitMonth = $splits.november)
228: #elseif ($month == 'December')
229: #set($splitMonth = $splits.december)
230: #end
231:
232: #splitBioNetwork($statPosBriefs, $month, $splitMonth)
233: #end ## foreach
234: #end
235: </table>
236: </div>
237: </div> ## scrollable
238: </div> ## srollable-table
239:
240: #end ## macro splitsBioNetworkData
241:
242: #macro (printRecentGames)
243: <table>
244: <tr class="thead accent-bg"><th colspan="3" class="text">Recent Games</th></tr>
245:
246: #set ($eventEnd = -1)
247: #foreach ($event in $events)
248: #if ($event.event.result.resolved)
249: #set ($eventEnd = $velocityCount)
250: #end
251: #end
252:
253: #set ($eventStart = $eventEnd - 5)
254: #if ($eventStart < 0) #set ($eventStart = 0) #end
255:
256: #foreach ($event in $events)
257: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
258: <tr>
259: <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
260: <td class="text">
261: #if ($event.event.neutralSite.length() > 0) vs.
262: #elseif (!$event.event.home) at
263: #else ## nothing for a home game
264: #end
265: $event.event.opponent.name
266: </td>
267: <td class="text">
268: #if ($event.event.statusCode >= 0)
269: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
270: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
271: #else
272: ${event.event.APResult}
273: #end
274: #end
275: </td>
276: </tr>
277: #end ## if
278: #end
279: </table>
280: #end ## macro printRecentGames
281:
282: #macro (gamelogData $p)
283:
284: #set ($p = $positions.get($p))
285: #set ($gamelogs = $gamelogs.get($p))
286: #set ($atLeastOneNotOverall = false)
287:
288: <div class="stats-box full clearfix">
289: <div class="scrollable">
290: <div>
291: <table>
292: <tr class="thead accent-bg">
293: <th class="text">Date</th>
294: <th class="pinned-col text">Opponent</th>
295: <th>Score</th>
296: #set ($colspan = 3)
297: #if ($p == 'goalie' && ($sport.enumCode == 9 || $sport.enumCode == 3)) ## field hockey: 9 soccer:3
298: #set ($colspan = $colspan + 1)
299: <th>Dec</th>
300: #end
301: #foreach ($gamelog in $gamelogs)
302: #set ($colspan = $colspan + 1)
303: <th>$gamelog</th>
304: #end
305: </tr>
306: #foreach ($event in $events)
307: <tr>
308: <td class="text">$formatter.formatDate($event.event.date, "MMM d") #if (!$event.event.overall) #set ($atLeastOneNotOverall = true) # #end</</td>
309: <td class="pinned-col text">
310: #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
311: $event.event.opponent.name
312: </td>
313: <td>
314: #if ($event.event.statusCode >= 0)
315: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
316: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
317: #else
318: ${event.event.APResult}
319: #end
320: #else #end
321: </td>
322: #if ($p == 'goalie' && ($sport.enumCode == 9 || $sport.enumCode == 3)) ## field hockey: 9 soccer:3
323: #if ($event.stats.get('gow') == 1)
324: <td>W</td>
325: #elseif ($event.stats.get('gol') == 1)
326: <td>L</td>
327: #elseif ($event.stats.get('got') == 1)
328: <td>T</td>
329: #else
330: <td>-</td>
331: #end
332: #end
333: #foreach ($gamelog in $gamelogs.keySet())
334: #set ($value = "-")
335: #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
336: <td>$value</td>
337: #end
338: </tr>
339: #end
340: #if ($atLeastOneNotOverall)
341: <tr><td colspan="$colspan"># Stats don't count towards season totals</td></tr>
342: #end
343: </table>
344: </div>
345: </div> ## scrollable
346: </div> ## stats-box
347:
348: #end ## macro gamelogData
349:
350: #macro (careerData $p)
351: #set ($p = $positions.get($p))
352: #set ($statPosBriefs = $briefs.get($p))
353:
354: <div class="stats-box full clearfix">
355: <div class="scrollable">
356: <div>
357: <table>
358: <tr class="thead accent-bg">
359: <th class="pinned-col"> </th>
360: #foreach ($brief in $statPosBriefs)
361: <th>$brief</th>
362: #end
363: </tr>
364:
365: #foreach ($season in $seasons)
366: #if ($careerMap.get($season.seasonName))
367: #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
368: #splitBioNetwork($statPosBriefs, $label, $careerMap[$season.seasonName])
369: #elseif ($wiki.valid())
370: <tr>
371: <td class="pinned-col text">${season.seasonName}</td>
372: <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
373: </tr>
374: #end
375: #end
376:
377: #splitBioNetwork($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
378:
379: </table>
380: </div>
381: </div> ## scrollable
382: </div> ## stats-box
383:
384: #end ## macro careerData
385:
386: ################################################## END MACROS #############################################################
387:
388: <head>
389: <title>
390: $!attributes.get("first_name") $!attributes.get("last_name") | #if ($attributes.get("number"))#$!attributes.get("number") | #end #if($attributes.get("position_abbr") && !$attributes.get("position_abbr").empty)$!attributes.get("position_abbr") | #elseif ($attributes.get("position"))$!attributes.get("position") | #end $attributes.get("team")
391: </title>
392: </head>
393:
394: <div class="bio-wrap bio-wrap-network clearfix" data-module="stats/responsive-container">
395:
396: #if ($page.title.length() > 0)
397: <h1>$page.title</h1>
398: #end
399:
400: <h2 class="player-name">
401: <span>$!attributes.get("first_name") $!attributes.get("last_name")</span>
402: #if (!$attributes.get("number").empty)<span>#$!attributes.get("number")</span>#end
403: #if($attributes.get("position_abbr") && !$attributes.get("position_abbr").empty)
404: <span>$!attributes.get("position_abbr")</span>
405: #elseif ($attributes.get("position"))
406: <span>$!attributes.get("position")</span>
407: #end
408: <a href="../teams?id=$!{attributes.get("teamId")}" aria-label="Team Stats - ${attributes.get("team")}">$attributes.get("team")</a>
409: </h2>
410:
411: #printHighlights
412:
413: <div class="body clearfix">
414: <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary">
415: <div class="tab-nav" data-module="jscroll" data-momentum="false">
416: <div>
417: <ul class="clearfix">
418: <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile" role="tab" id="stats-tab-player-profile">Player Profile</a></li>
419: <li #if ($view == "gamelog")class="active"#end><a href="${page.url}?view=gamelog" role="tab" id="stats-tab-game-log">Game Log</a></li>
420: #if ($showCareer)
421: <li #if ($view == "career")class="active"#end><a href="${page.url}?view=career" role="tab" id="stats-tab-career-stats">Career Stats</a></li>
422: #end
423: <li #if ($view == "splits")class="active"#end><a href="${page.url}?view=splits" role="tab" id="stats-tab-split-stats">Split Stats</a></li>
424: </ul>
425: </div>
426: </div> ## tab-nav
427:
428: <div class="tab-panels clearfix">
429:
430: ## PROFILE
431: #set ($class = "tab-panel clearfix")
432: #if ($view == "profile")
433: #set ($class = "tab-panel active clearfix")
434: #end
435: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-player-profile">
436:
437: ## Player profile
438: <div class="clearfix stats-wrap">
439:
440: ## LAST SIX GAMES
441: <div class="stats-box half">
442: #printRecentGames()
443: </div>
444:
445: ## RANKING
446: <div class="stats-box half">
447: $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
448: </div>
449:
450: </div> ## clearfix
451:
452: #if ($hasSynopsis)
453: <div class="clearfix">$!synopsis</div>
454: #end
455:
456: #if ($hasBioBrief)
457: <div class="clearfix">$website.include($htmlStatsURL)</div>
458: #end
459:
460: #if ($htmlStatsURL)
461: <div class="clearfix">$website.include($bioBriefURL)</div>
462: #end
463:
464: </div>
465: ## PROFILE
466:
467: ## GAMELOG
468: #set ($class = "tab-panel clearfix")
469: #if ($view == "gamelog")
470: #set ($class = "tab-panel active clearfix")
471: #end
472:
473: #set ($activePos = $statPos)
474: #if ($view == "gamelog" && $paramPos.length() > 0)
475: #if ($positions.get($paramPos).length() > 0)
476: #set ($activePos = $positions.get($paramPos))
477: #end
478: #end
479:
480: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-game-log">
481:
482: #if ($gamelogsCategoriesLabels)
483: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
484: <div class="tab-nav" data-module="jscroll" data-momentum="false">
485: <div>
486: <ul class="clearfix">
487: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
488: #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
489:
490: #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
491: #set($gamelogsCatLabelVal = "Defence")
492: #end
493:
494: <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end>
495: <a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" role="tab" id="stats-tab-game-log-${gamelogsCatLabelVal.toLowerCase()}" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a>
496: </li>
497: #end
498: </ul>
499: </div>
500: </div>
501: <div class="tab-panels">
502: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
503: #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
504: #set ($class = "tab-panel clearfix")
505: #if ($gamelogsCatLabel.key == $activePos)
506: #set ($class = "tab-panel active clearfix")
507: #end
508: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-game-log-${gamelogsCatLabelVal.toLowerCase()}">
509: <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
510: </div>
511: #end
512: </div>
513: </div>
514: #else
515: <div class="stats-wrap clearfix">#gamelogData($pos)</div>
516: #end
517:
518: </div> ## tab-panel
519: ## GAMELOG
520:
521: ## CAREER
522: #if ($showCareer)
523:
524: #set ($activePos = $statPos)
525: #if ($view == "career" && $paramPos.length() > 0)
526: #if ($positions.get($paramPos).length() > 0)
527: #set ($activePos = $positions.get($paramPos))
528: #end
529: #end
530:
531: #set ($class = "tab-panel clearfix")
532: #if ($view == "career")
533: #set ($class = "tab-panel active clearfix")
534: #end
535:
536: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-career-stats">
537:
538: #if ($briefsCategoriesLabels)
539: #printCategories($briefsCategoriesLabels "career" "Career Stats")
540: #else
541: <div class="stats-wrap clearfix">#careerData($activePos)</div>
542: #end
543:
544: </div> ## tab-panel
545: #end ## CAREER
546:
547: ## SPLITS
548: #set ($class = "tab-panel clearfix")
549: #if ($view == "splits")
550: #set ($class = "tab-panel active clearfix")
551: #end
552:
553: #set ($activePos = $statPos)
554: #if ($view == "splits" && $paramPos.length() > 0)
555: #if ($positions.get($paramPos).length() > 0)
556: #set ($activePos = $positions.get($paramPos))
557: #end
558: #end
559:
560: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-split-stats">
561:
562: #if ($briefsCategoriesLabels)
563: #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
564: #else
565: <div class="stats-wrap clearfix">#splitsBioNetworkData($pos)</div>
566: #end
567:
568: </div> ## tab-panel
569: ## SPLITS
570:
571: </div> ##tab-panels
572:
573: </div> ## tab-container
574: </div> ## body
575:
576:
577: </div> ## bio-wrapper
578: $wiki.su
|