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 (split $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: #splitsData($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 (splitsData $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: #split($statPosBriefs, "Total", $splits.overall)
168: #if ($showconf)
169: #split($statPosBriefs, "Conference", $splits.conference)
170: #end
171: #split($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: #split($statPosBriefs, "Home", $splits.home)
179: #split($statPosBriefs, "Away", $splits.away)
180: #split($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: #split($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: #split($statPosBriefs, $month, $splitMonth)
233: #end ## foreach
234: #end
235: </table>
236: </div>
237: </div> ## scrollable
238: </div> ## srollable-table
239:
240: #end ## macro splitsData
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 (split $statPosBriefs $label $stats)
351: <tr>
352: <td class="pinned-col text">${label}</td>
353: #foreach ($brief in $statPosBriefs.keySet())
354: #set ($value = "-")
355: #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
356: <td>#if ($value.length() > 0) $value #else - #end</td>
357: #end
358: </tr>
359: #end
360:
361: #macro (careerData $p)
362: #set ($p = $positions.get($p))
363: #set ($statPosBriefs = $briefs.get($p))
364:
365: <div class="stats-box full clearfix">
366: <div class="scrollable">
367: <div>
368: <table>
369: <tr class="thead accent-bg">
370: <th class="pinned-col"> </th>
371: #foreach ($brief in $statPosBriefs)
372: <th>$brief</th>
373: #end
374: </tr>
375:
376: #foreach ($season in $seasons)
377: #if ($careerMap.get($season.seasonName))
378: #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
379: #split($statPosBriefs, $label, $careerMap[$season.seasonName])
380: #elseif ($wiki.valid())
381: <tr>
382: <td class="pinned-col text">${season.seasonName}</td>
383: <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
384: </tr>
385: #end
386: #end
387:
388: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
389:
390: </table>
391: </div>
392: </div> ## scrollable
393: </div> ## stats-box
394:
395: #end ## macro careerData
396:
397: ################################################## END MACROS #############################################################
398:
399: <head>
400: <title>
401: $!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")
402: </title>
403: </head>
404:
405: <div class="bio-wrap bio-wrap-network clearfix" data-module="stats/responsive-container">
406:
407: #if ($page.title.length() > 0)
408: <h1>$page.title</h1>
409: #end
410:
411: <h2 class="player-name">
412: <span>$!attributes.get("first_name") $!attributes.get("last_name")</span>
413: #if (!$attributes.get("number").empty)<span>#$!attributes.get("number")</span>#end
414: #if($attributes.get("position_abbr") && !$attributes.get("position_abbr").empty)
415: <span>$!attributes.get("position_abbr")</span>
416: #elseif ($attributes.get("position"))
417: <span>$!attributes.get("position")</span>
418: #end
419: <a href="../teams?id=$!{attributes.get("teamId")}" aria-label="Team Stats - ${attributes.get("team")}">$attributes.get("team")</a>
420: </h2>
421:
422: #printHighlights
423:
424: <div class="body clearfix">
425: <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary">
426: <div class="tab-nav" data-module="jscroll" data-momentum="false">
427: <div>
428: <ul class="clearfix">
429: <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile" role="tab" id="stats-tab-player-profile">Player Profile</a></li>
430: <li #if ($view == "gamelog")class="active"#end><a href="${page.url}?view=gamelog" role="tab" id="stats-tab-game-log">Game Log</a></li>
431: #if ($showCareer)
432: <li #if ($view == "career")class="active"#end><a href="${page.url}?view=career" role="tab" id="stats-tab-career-stats">Career Stats</a></li>
433: #end
434: <li #if ($view == "splits")class="active"#end><a href="${page.url}?view=splits" role="tab" id="stats-tab-split-stats">Split Stats</a></li>
435: </ul>
436: </div>
437: </div> ## tab-nav
438:
439: <div class="tab-panels clearfix">
440:
441: ## PROFILE
442: #set ($class = "tab-panel clearfix")
443: #if ($view == "profile")
444: #set ($class = "tab-panel active clearfix")
445: #end
446: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-player-profile">
447:
448: ## Player profile
449: <div class="clearfix stats-wrap">
450:
451: ## LAST SIX GAMES
452: <div class="stats-box half">
453: #printRecentGames()
454: </div>
455:
456: ## RANKING
457: <div class="stats-box half">
458: $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
459: </div>
460:
461: </div> ## clearfix
462:
463: #if ($hasSynopsis)
464: <div class="clearfix">$!synopsis</div>
465: #end
466:
467: #if ($hasBioBrief)
468: <div class="clearfix">$website.include($htmlStatsURL)</div>
469: #end
470:
471: #if ($htmlStatsURL)
472: <div class="clearfix">$website.include($bioBriefURL)</div>
473: #end
474:
475: </div>
476: ## PROFILE
477:
478: ## GAMELOG
479: #set ($class = "tab-panel clearfix")
480: #if ($view == "gamelog")
481: #set ($class = "tab-panel active clearfix")
482: #end
483:
484: #set ($activePos = $statPos)
485: #if ($view == "gamelog" && $paramPos.length() > 0)
486: #if ($positions.get($paramPos).length() > 0)
487: #set ($activePos = $positions.get($paramPos))
488: #end
489: #end
490:
491: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-game-log">
492:
493: #if ($gamelogsCategoriesLabels)
494: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
495: <div class="tab-nav" data-module="jscroll" data-momentum="false">
496: <div>
497: <ul class="clearfix">
498: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
499: #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
500:
501: #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
502: #set($gamelogsCatLabelVal = "Defence")
503: #end
504:
505: <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end>
506: <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>
507: </li>
508: #end
509: </ul>
510: </div>
511: </div>
512: <div class="tab-panels">
513: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
514: #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
515: #set ($class = "tab-panel clearfix")
516: #if ($gamelogsCatLabel.key == $activePos)
517: #set ($class = "tab-panel active clearfix")
518: #end
519: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-game-log-${gamelogsCatLabelVal.toLowerCase()}">
520: <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
521: </div>
522: #end
523: </div>
524: </div>
525: #else
526: <div class="stats-wrap clearfix">#gamelogData($pos)</div>
527: #end
528:
529: </div> ## tab-panel
530: ## GAMELOG
531:
532: ## CAREER
533: #if ($showCareer)
534:
535: #set ($activePos = $statPos)
536: #if ($view == "career" && $paramPos.length() > 0)
537: #if ($positions.get($paramPos).length() > 0)
538: #set ($activePos = $positions.get($paramPos))
539: #end
540: #end
541:
542: #set ($class = "tab-panel clearfix")
543: #if ($view == "career")
544: #set ($class = "tab-panel active clearfix")
545: #end
546:
547: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-career-stats">
548:
549: #if ($briefsCategoriesLabels)
550: #printCategories($briefsCategoriesLabels "career" "Career Stats")
551: #else
552: <div class="stats-wrap clearfix">#careerData($activePos)</div>
553: #end
554:
555: </div> ## tab-panel
556: #end ## CAREER
557:
558: ## SPLITS
559: #set ($class = "tab-panel clearfix")
560: #if ($view == "splits")
561: #set ($class = "tab-panel active clearfix")
562: #end
563:
564: #set ($activePos = $statPos)
565: #if ($view == "splits" && $paramPos.length() > 0)
566: #if ($positions.get($paramPos).length() > 0)
567: #set ($activePos = $positions.get($paramPos))
568: #end
569: #end
570:
571: <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-split-stats">
572:
573: #if ($briefsCategoriesLabels)
574: #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
575: #else
576: <div class="stats-wrap clearfix">#splitsData($pos)</div>
577: #end
578:
579: </div> ## tab-panel
580: ## SPLITS
581:
582: </div> ##tab-panels
583:
584: </div> ## tab-container
585: </div> ## body
586:
587:
588: </div> ## bio-wrapper
589: $wiki.su
|