Page source: |
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4:
5: #set ($locale = "en_us")
6: #set ($locale = $options.get("locale"))
7:
8: #set ($showConf = true)
9: #if ($options.get("stats_hide_conference") and $options.get("stats_hide_conference").equalsIgnoreCase("hide"))
10: #set ($showConf = false)
11: #end
12:
13: #set ($teamId = $attributes.get("teamId"))
14: #set ($stats = $splits.overall)
15:
16: #set ($pos = "")
17: #if ($sport.enumCode == 0) ## Football
18: #set ($pos = "off")
19: #elseif ($sport.enumCode == 2) ## Basketball
20: #set ($pos = "sh")
21: #elseif ($sport.enumCode == 3) ## Soccer
22: #set ($pos = "sc")
23: #elseif ($sport.enumCode == 9) ## Field Hockey
24: #set ($pos = "fielder")
25: #end
26:
27: #set ($posEsc = $formatter.escapeXml($request.getParameter("pos").toLowerCase()))
28: #if ($posEsc.length() > 0)
29: #set ($pos = $posEsc)
30: #end
31:
32: #if ($sport.enumCode == 9) ## Field Hockey
33: #if ($pos == "goalie")
34: #set ($pos = "fielder")
35: #end
36: #if ($pos == "gg")
37: #set ($pos = "kg")
38: #end
39: #end
40:
41: #set ($restriction = 0)
42: #set ($restrictionEsc = $formatter.escapeXml($request.getParameter("r")))
43: #if ($restrictionEsc.length() > 0 && $restrictionEsc.equals("1"))
44: #set ($restriction = 1)
45: #end
46:
47: #set ($resultFormat = "AP1")
48: #if ($options.get("schedule_result_format").equals("L, 1-2"))
49: #set ($resultFormat = "AP2")
50: #end
51:
52: #set ($view = "profile")
53: #if ($request.getParameter("view"))
54: #set ($view = $formatter.escapeXml($!request.getParameter("view")))
55: #end
56:
57: #if ($briefsCategoriesLabels)
58: #set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
59: #set($firstCategoryPos = $briefsCategoriesSeason.keySet().iterator().next())
60: #end
61:
62: #set ($showRoster = false)
63: #if ($options.get("stats_show_roster") and $options.get("stats_show_roster").equalsIgnoreCase("yes"))
64: #set ($showRoster = true)
65: #end
66:
67: #set ($showAttendance = true)
68: #if ($options.get("stats_show_attendance") and $options.get("stats_show_attendance").equalsIgnoreCase("hide"))
69: #set ($showAttendance = false)
70: #end
71:
72: ## MACROS
73: #macro (printTableHeader $label $class)
74: <th class="text-uppercase $class">$label</th>
75: #end
76:
77: #macro (printResultAriaLabel $event)
78: #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
79: #if ($event.neutralSite.length() > 0 || $event.home)
80: #set ($ariaLabel = "${ariaLabel} vs.")
81: #else
82: #set ($ariaLabel = "${ariaLabel} at")
83: #end
84: #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
85: #if ($event.neutralSite.length() > 0)
86: #set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
87: #end
88: #set ($ariaLabel = "${ariaLabel} Box Score")
89: aria-label="$ariaLabel"
90: #end
91:
92: #macro (printBriefCategory $briefCatLabel $briefCatPos $r)
93: #if ($locale == "en_gb" && $briefCatLabel == "Defense")
94: #set ($briefCatLabel = "Defence")
95: #end
96:
97: #if ($lineupDefaultSorting && $lineupDefaultSorting.containsKey($briefCatPos))
98: #set ($sort = $lineupDefaultSorting.get($briefCatPos))
99: #end
100:
101: #if ($allowChooseSort)
102: #set ($sortEsc = $formatter.escapeXml($request.getParameter("sort")))
103: #if ($sortEsc.length() > 0)
104: #set ($sort = $sortEsc)
105: #end
106: #end
107:
108: #set ($url = "")
109: #set ($url = "${page.sectionPage.sectionPage.url}/players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&pos=${briefCatPos}&r=${r}&tmpl=stats-bios-template")
110:
111: #if ($lineupMin && $lineupMin.containsKey($briefCatPos))
112: #set ($minStat = $lineupMin.get($briefCatPos))
113: #set ($url = $url + "&min=" + $minStat)
114: #end
115:
116: #if ($lineupFilters)
117: #if ($lineupFilters.containsKey("cs"))
118: #set($url = $url + "&cs=n")
119: #end
120:
121: #if ($lineupFilters.containsKey("skipBlank"))
122: #set($skipBlank = $lineupFilters.get("skipBlank"))
123:
124: #if ($skipBlank.contains($briefCatPos))
125: #set($url = $url + "&skipBlank=n")
126: #end
127: #end
128: #end
129:
130: <div class="my-3">
131: <h5>$briefCatLabel</h5>
132: $website.includeAgain($url)
133: </div>
134:
135: #end ## printBriefCategory
136:
137: #macro(printBriefCategories $r)
138: ## Set this for the inner page to pull something out
139: #if ($r == 1)
140: #set ($restrictionLabel = "conf")
141: $!request.setAttribute("teamStats", $splits.conference)
142: #else
143: #set ($restrictionLabel = "overall")
144: $!request.setAttribute("teamStats", $splits.overall)
145: #end
146:
147: #if ($briefsCategoriesLabels)
148:
149: #set($allowChooseSort = false)
150:
151: #if ($lineupFilters && $lineupFilters.containsKey("allowChooseSort"))
152: #set ($allowChooseSort = true)
153: #end
154:
155: #if ($briefsCategoriesLabels.containsKey("Game"))
156: #set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game"))
157:
158: ## Print Game categories tables
159: ## Get the first Game category position
160: #set ($gamePos = $briefsCategoriesGame.keySet().iterator().next())
161:
162: ## GAME
163: <div #if ($gamePosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-game" role="tabpanel">
164: #foreach($briefsCatGame in $briefsCategoriesGame.entrySet())
165: #printBriefCategory($briefsCatGame.value, $briefsCatGame.key, $r)
166: #end
167: </div>
168:
169: ## Print the Season categories tables
170: #set ($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
171:
172: ## SEASON
173: <div #if ($seasonPosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-season" role="tabpanel">
174: #foreach ($briefCat in $briefsCategoriesSeason.entrySet())
175: #printBriefCategory($briefCat.value, $briefCat.key, $r)
176: #end
177: </div>
178:
179: ## Print the Minutes categories tables
180: #if ($briefsCategoriesLabels.containsKey("Minutes"))
181: #set($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes"))
182: #set($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next())
183:
184: #set($showMinutesTab = false)
185: #if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos))
186: #set($lineupMinOverallValues = $lineupMinTeam.get($minutesPos))
187:
188: #set($lineupMinOverallStat = $lineupMinOverallValues[0])
189: #set($lineupMinOverallMinVal = $lineupMinOverallValues[1])
190: #set($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal))
191:
192: #if ($tool.math.round($splits.overall[$lineupMinOverallStat]) && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue)
193: #set($showMinutesTab = true)
194: #end
195: #end
196:
197: #if ($showMinutesTab)
198: ## MINUTES
199: <div #if ($minutesPosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-minutes" role="tabpanel">
200: #foreach($briefsCatMinutes in $briefsCategoriesMinutes.entrySet())
201: #printBriefCategory($briefsCatMinutes.value, $briefsCatMinutes.key, $r)
202: #end
203: </div>
204: #end
205: #end ## end minutes
206: #else
207:
208: #set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
209: ## SINGLE SEASON
210: #foreach($briefCat in $briefsCategoriesSeason.entrySet())
211: #printBriefCategory($briefCat.value, $briefCat.key, $r)
212: #end
213: #end
214:
215: #elseif ($lineupFilters)
216:
217: ## All of the supported sports has lineupFilters, so print it without matter it does not have briefs category, yeah voleyball is you :)
218: #set ($sort = $formatter.escapeXml($request.getParameter("sort")))
219: #set ($url = "../players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&r=${r}")
220: $website.includeAgain($url)
221:
222: #else
223: We do not support this sport
224: #end
225: #end ## printBriefCategories
226:
227: #macro (printCategories $briefCategoryLabels $v)
228: <div class="tab-container">
229: <div class="d-flex flex-row text-nowrap align-items-center justify-content-center">
230: <div class="secondary-tab-select-container flex-fill">
231: <select class="tab-nav-select-helper form-select" id="teaminfo-tabs-secondary-${v}-select" aria-label="Choose a stat group">
232: #foreach($label in $briefCategoryLabels.entrySet())
233: #set($catLabel = $label.value)
234: #if ($locale == "en_gb" && $catLabel == "Defense")
235: #set ($catLabel = "Defence")
236: #end
237: <option value="#gamelog-${v}-${label.key}" #if ($pos == $key.pos || $foreach.first) selected #end>${catLabel}</option>
238: #end
239: </select>
240: <script>
241: $('.tab-nav-select-helper').on('change', function(e) {
242: var id = $(this).val();
243: $('a[data-bs-target="' + id + '"]').tab('show');
244: });
245: </script>
246: </div>
247: </div>
248: <div class="tab-nav d-none">
249: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs-secondary-${v}" role="tablist">
250: #foreach($label in $briefCategoryLabels.entrySet())
251: #set($catLabel = $label.value)
252: #if ($locale == "en_gb" && $catLabel == "Defense")
253: #set ($catLabel = "Defence")
254: #end
255: #set ($aClass = "nav-link text-nowrap text-center")
256: #if ($pos == $label.key || ($pos.length() == 0 && $velocityCount == 1))
257: #set ($aClass = "${aClass} active")
258: #end
259: <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
260: <a class="${aClass}" href="${page.url}?view=${v}&pos=${label.key}" role="tab" data-bs-toggle="tab" data-bs-target="#gamelog-${v}-${label.key}">${catLabel}</a>
261: </li>
262: #end
263: </ul>
264: </div>
265: <div class="tab-content p-3">
266: #foreach ($briefCat in $briefCategoryLabels.entrySet())
267: #set ($classAttr = "tab-pane")
268: #if ($briefCat.key == $pos || ($pos.length() == 0 && $velocityCount == 1))
269: #set ($classAttr = "${classAttr} active")
270: #end
271: <div class="$classAttr" id="gamelog-${v}-${briefCat.key}" role="tabpanel">
272: #if ($v == "gamelog")
273: #gamelogData($briefCat.key)
274: #elseif ($v == "splits")
275: #splitsTeamNetworkData($briefCat.key)
276: #end
277: </div>
278: #end
279: </div>
280: </div>
281: #end ## printCategories
282:
283: #macro (printSeasonGameMinutesTabs $r)
284: #if ($briefsCategoriesLabels.containsKey("Game"))
285: #set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game"))
286: #set ($gamePos = $briefsCategoriesGame.keySet().iterator().next())
287:
288: #set ($restrictionLabel = "overall")
289: #if ($r == 1)
290: #set ($restrictionLabel = "conf")
291: #end
292:
293: #set ($showMinutesTab = false)
294: #if ($briefsCategoriesLabels.containsKey("Minutes"))
295: #set ($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes"))
296: #set ($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next())
297:
298: #if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos))
299: #set ($lineupMinOverallValues = $lineupMinTeam.get($minutesPos))
300: #set ($lineupMinOverallStat = $lineupMinOverallValues[0])
301: #set ($lineupMinOverallMinVal = $lineupMinOverallValues[1])
302: #set ($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal))
303:
304: #if ($tool.math.round($splits.overall[$lineupMinOverallStat]) && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue)
305: #set($showMinutesTab = true)
306: #end
307: #end
308: #end
309: <div class="tab-container">
310: <div class="tab-nav">
311: #set($gamePosActive = false)
312: #set($seasonPosActive = false)
313: #set($minutesPosActive = false)
314:
315: #if($pos.equals($gamePos) || $pos.endsWith("g") || $pos.endsWith("gext"))
316: #set($gamePosActive = true)
317: #else
318: #if($showMinutesTab && $pos.equals($minutesPos))
319: #set($minutesPosActive = true)
320: #elseif($pos.equals($firstCategoryPos))
321: #set($seasonPosActive = true)
322: #end
323: #set($seasonPosActive = true)
324: #end
325:
326:
327: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" data-pos="$pos" data-gamePos="$pos.equals($gamePos)" data-firstCategoryPos="$pos.equals($firstCategoryPos)" data-minutesPos="$pos.equals($minutesPos)" id="teaminfo-tabs-secondary-minutes" role="tablist">
328: #printSubTab($gamePosActive, "${url}?view=lineup&r=${r}&pos=${gamePos}", "Game", "#lineup-${restrictionLabel}-game")
329: #printSubTab($seasonPosActive, "${url}?view=lineup&r=${r}&pos=${firstCategoryPos}", "Season", "#lineup-${restrictionLabel}-season")
330: #if ($showMinutesTab)
331: #printSubTab($minutesPosActive, "${url}?view=lineup&r=${r}&pos=${minutesPos}", "Minutes", "#lineup-${restrictionLabel}-minutes")
332: #end
333: </ul>
334: </div>
335: <div class="tab-content p-3">
336: #printBriefCategories($r)
337: </div>
338: </div>
339: #end
340: #end ## printSeasonGameMinutesTabs
341:
342: #macro (printLineupTabs)
343: <div class="tab-container">
344: <div class="tab-nav">
345: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs-secondary-lineup" role="tablist">
346: #printSubTab(true, "${url}?view=lineup&r=0&pos=${pos}", "Overall", "#lineup-overall-pane")
347: #if ($showConf)
348: #printSubTab(false, "${url}?view=lineup&r=1&pos=${pos}", "Conference", "#lineup-conf-pane")
349: #end
350: </ul>
351: </div>
352: <div class="tab-content p-3">
353: <div class="tab-pane active" id="lineup-overall-pane" role="tabpanel">
354: #if ($briefsCategoriesLabels.containsKey("Game"))
355: #printSeasonGameMinutesTabs(0)
356: #else
357: #printBriefCategories(0)
358: #end
359: </div>
360: #if ($showConf)
361: <div class="tab-pane" id="lineup-conf-pane" role="tabpanel">
362: #if ($briefsCategoriesLabels.containsKey("Game"))
363: #printSeasonGameMinutesTabs(1)
364: #else
365: #printBriefCategories(1)
366: #end
367: </div>
368: #end
369: </div>
370: </div>
371: #end ## printLineupTabs
372:
373: #set($statClass = "flex-fill text-center border-bottom border-end p-3 col-3 col-lg-auto")
374: #macro (printStat $label $val $fmt)
375: <li class="$statClass" data-val="$val" data-format="$fmt">
376: <div class="d-flex flex-column justify-content-center align-items-center h-100">
377: <div class="small text-uppercase text-muted">$label</div>
378: <div class="fs-4 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, $fmt)</div>
379: </div>
380: </li>
381: #end
382:
383: #macro (printStatGraph $label $val $fmt)
384: <li class="$statClass" data-val="$val" data-format="$fmt">
385: <div class="d-flex flex-column justify-content-center align-items-center h-100 proj-progress-card">
386: <div class="small text-uppercase text-muted">$label</div>
387: <div class="fs-4 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, $fmt)</div>
388: #set ($percent = $tool.math.mul($val, 100))
389: <div class="progress mt-2 w-100">
390: <div class="progress-bar bg-primary" role="progressbar" style="width: $formatter.formatNumber($percent, 1)%;" aria-valuenow="$formatter.formatNumber($percent, 1)" aria-valuemin="0" aria-valuemax="100"></div>
391: </div>
392: </div>
393: </li>
394: #end
395:
396: #macro (printHighlights)
397: #if ($highlights)
398: <ul class="team-stats my-3 list-unstyled d-flex flex-wrap justify-content-center align-items-stretch border-top border-start">
399: #foreach ($highlight in $highlights.keySet())
400: #set ($value = "-")
401: #set ($value = $stats.get($highlight))
402: #set ($value = $tool.math.toInteger($value.replace('-', '0')))
403: #if($formats.get($highlight).equals("#.000") || $formats.get($highlight).equals(".000"))
404: #printStatGraph("$!highlights.get($highlight).replace('-per game', '/g').replace('per game', '')", $!value, $formats.get($highlight))
405: #else
406: #printStat("$!highlights.get($highlight).replace('-per game', '/g').replace('per game', '')", $!value, $formats.get($highlight))
407: #end
408:
409: #end
410: </ul>
411: #end
412:
413: #end ## macro printHighlights
414: #macro (gamelogData $p)
415:
416: #set ($gamelogStats = $gamelogs.get($p))
417:
418: <table class="table table-hover">
419: <thead class="thead-dark">
420: <tr>
421: #printTableHeader("Date", "w-1 text-start")
422: #printTableHeader("Opponent", "")
423: #printTableHeader("Score", "text-center")
424: #foreach ($gamelog in $gamelogStats)
425: #printTableHeader($gamelog, "text-center")
426: #end
427: </tr>
428: </thead>
429: #foreach ($event in $events)
430: <tr>
431: <td class="text-nowrap text-start">
432: $formatter.formatDate($event.event.date, "MMM d")
433: #if (!$event.event.overall)
434: #set ($atLeastOneNotOverall = true) #
435: #end
436: </td>
437: <td class="text-nowrap">
438: #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
439: $event.event.opponent.name
440: </td>
441: <td class="text-nowrap text-center">
442: #if ($event.event.statusCode >= 0)
443: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
444: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
445: #else
446: ${event.event.APResult}
447: #end
448: #else
449: #end
450: </td>
451: #foreach ($gamelog in $gamelogStats.keySet())
452: #set ($value = "-")
453: #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
454: <td class="text-center text-nowrap">$value</td>
455: #end
456: </tr>
457: #end
458: </table>
459: #end ## gamelogData
460:
461: #macro (printRecentGames)
462: <table class="table table-hover">
463: <thead class="thead-dark">
464: <tr>
465: #printTableHeader("Date", "w-1 text-start")
466: #printTableHeader("Opponent", "")
467: #printTableHeader("Result", " text-center")
468: </tr>
469: </thead>
470:
471: #set ($eventEnd = -1)
472: #foreach ($event in $events)
473: #if ($event.event.result.resolved)
474: #set ($eventEnd = $velocityCount)
475: #end
476: #end
477:
478: #set ($eventStart = $eventEnd - 5)
479: #if ($eventStart < 0) #set ($eventStart = 0) #end
480:
481: #foreach ($event in $events)
482: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
483: <tr>
484: <td class="text-nowrap text-start"><span class="date">$formatter.formatDate($event.event.date, "MMM d")</span></td>
485: <td>
486: #if ($event.event.neutralSite.length() > 0) vs.
487: #elseif (!$event.event.home) at
488: #else ## nothing for a home game
489: #end
490: $event.event.opponent.name
491: </td>
492: <td class="text-center">
493: #if ($event.event.statusCode >= 0)
494: ## FORMATTED RESULT
495: #set ($formattedResult = "")
496:
497: #if ($resultFormat.equals("AP1"))
498: #set ($formattedResult = $event.event.APResult)
499: #elseif ($resultFormat.equals("AP2"))
500: #set ($formattedResult = $event.event.AP2Result)
501: #end
502:
503: #if ($formattedResult.startsWith("W, "))
504: #set ($formattedResult = $formattedResult.replace("W, ", '<span class="winner event-winner">W</span>, '))
505: #elseif ($formattedResult.startsWith("L, "))
506: #set ($formattedResult = $formattedResult.replace("L, ", '<span class="loser event-loser">L</span>, '))
507: #end
508:
509: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
510: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${formattedResult}</a>
511: #else
512: ${formattedResult}
513: #end
514: #end
515: </td>
516: </tr>
517: #end
518: #end
519: </table>
520: #end ## printRecentGames
521:
522: #macro (splitTeamNetwork $statPosBriefs $label $stats)
523: <tr>
524: <th scope="row" class="font-weight-normal text-end">${label}</th>
525: #foreach ($brief in $statPosBriefs.keySet())
526: #set ($value = "-")
527: #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
528: <td class="text-center text-nowrap">#if ($value.length() > 0) $value #else - #end</td>
529: #end
530: </tr>
531: #end ## split
532:
533: #macro (splitsTeamNetworkData $p)
534: #set ($statPosBriefs = $briefs.get($p))
535: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))
536:
537: #if ($statPosBriefs.size() > 0)
538: <table class="table table-hover">
539: <thead class="thead-dark">
540: <tr>
541: <th class="text-uppercase" aria-label="Title"> </th>
542: #foreach ($brief in $statPosBriefs)
543: #printTableHeader($brief, "text-center")
544: #end
545: </tr>
546: </thead>
547: #splitTeamNetwork($statPosBriefs, "Total", $splits.overall)
548: #if ($showConf)
549: #splitTeamNetwork($statPosBriefs, "Conference", $splits.conference)
550: #splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
551: #else
552: #splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
553: #end ## hide overall/conf
554:
555: <tr class="bg-transparent">
556: <td colspan="$colspan"> </td>
557: </tr>
558:
559: #splitTeamNetwork($statPosBriefs, "Home", $splits.home)
560: #splitTeamNetwork($statPosBriefs, "Away", $splits.away)
561: #splitTeamNetwork($statPosBriefs, "Neutral", $splits.neutral)
562:
563: <tr class="bg-transparent">
564: <td colspan="$colspan"> </td>
565: </tr>
566:
567: #foreach($gameResult in $gamesResults.entrySet())
568: #if ($gameResult.key == "wins")
569: #set ($splitGameResult = $splits.inWins)
570: #elseif ($gameResult.key == "losses")
571: #set ($splitGameResult = $splits.inLosses)
572: #elseif ($gameResult.key == "ties")
573: #set ($splitGameResult = $splits.inTies)
574: #end
575:
576: #splitTeamNetwork($statPosBriefs, $gameResult.value, $splitGameResult)
577: #end
578:
579: <tr class="bg-transparent">
580: <td colspan="$colspan"> </td>
581: </tr>
582:
583: #if ($monthsPlayed and $monthsPlayed.size() > 0)
584: #foreach($month in $monthsPlayed)
585: #if ($month == 'January')
586: #set ($splitMonth = $splits.january)
587: #elseif ($month == 'February')
588: #set ($splitMonth = $splits.february)
589: #elseif ($month == 'March')
590: #set($splitMonth = $splits.march)
591: #elseif ($month == 'April')
592: #set($splitMonth = $splits.april)
593: #elseif ($month == 'May')
594: #set ($splitMonth = $splits.may)
595: #elseif ($month == 'June')
596: #set ($splitMonth = $splits.june)
597: #elseif ($month == 'July')
598: #set($splitMonth = $splits.july)
599: #elseif ($month == 'August')
600: #set ($splitMonth = $splits.august)
601: #elseif ($month == 'September')
602: #set($splitMonth = $splits.september)
603: #elseif ($month == 'October')
604: #set($splitMonth = $splits.october)
605: #elseif ($month == 'November')
606: #set ($splitMonth = $splits.november)
607: #elseif ($month == 'December')
608: #set($splitMonth = $splits.december)
609: #end
610:
611: #splitTeamNetwork($statPosBriefs, $month, $splitMonth)
612: #end ## foreach
613: #end
614: </table>
615: #end
616: #end ## splitsTeamNetworkData
617:
618: #macro (printAttendance)
619: #if ($showAttendance)
620: <table class="table table-hover">
621: <thead class="thead-dark">
622: <tr>
623: #printTableHeader("Date", "w-1 text-start")
624: #printTableHeader("Opponent", "")
625: #printTableHeader("Score", "text-center")
626: #printTableHeader("Attend", "text-center")
627: </tr>
628: </thead>
629: #set ($counter = 0)
630: #foreach ($event in $events)
631: <tr>
632: <td class="text-nowrap text-start">$formatter.formatDate($event.event.date, "MMM d")</td>
633: <td class="text-nowrap">
634: #if ($event.event.neutralSite.length() > 0) vs.
635: #elseif (!$event.event.home) at
636: #else ## nothing for a home game
637: #end
638: $event.event.opponent.name
639: </td>
640: <td class="text-nowrap text-center">
641: #if ($event.event.statusCode >= 0)
642: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
643: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
644: #else
645: ${event.event.result}
646: #end
647: #else #end
648: </td>
649: <td class="text-nowrap text-center">
650: #set ($value = "-")
651: #set ($value = $!formatter.formatNumber($event.stats.get('at'), $formats.get('at')))
652: #if ($value.length() > 0) $value #else - #end
653: </td>
654: </tr>
655: #end
656: </table>
657: #end ## showAttendance
658: #end
659:
660: #macro (printTab $viewParam $label)
661: #set ($classAttr = "nav-link text-nowrap text-center")
662: #if ($viewParam == $view)
663: #set ($classAttr = "${classAttr} active")
664: #end
665: <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666: <a href="${page.url}?view=${viewParam}" class="$classAttr" role="tab" data-bs-toggle="tab" data-bs-target="#${viewParam}" aria-controls="$viewParam">$label</a>
667: </li>
668: #end
669:
670: #macro (printSubTab $active $url $label $target)
671: <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
672: <a class="nav-link text-nowrap text-center #if ($active) active #end" href="$url" role="tab" data-bs-toggle="tab" data-bs-target="$target">$label</a>
673: </li>
674: #end
675:
676: #macro (printPaneAttrs $viewParam)
677: #set ($classAttr = "tab-pane")
678: #if ($viewParam == $view)
679: #set ($classAttr = "tab-pane active")
680: #else
681: #set ($classAttr = "${classAttr} fade")
682: #end
683:
684: class="$classAttr" role="tabpanel" id="$viewParam"
685: #end
686:
687: #macro (printCoachViewUrl)
688: #set ($coachViewUrl = "${page.url}?tmpl=teaminfo-network-monospace-template")
689: #set ($enumCode = $sport.enumCode)
690:
691: #if ($enumCode == 2)
692: #set ($coachViewUrl = "${coachViewUrl}&sort=ptspg")
693: #elseif ($enumCode == 1 || $enumCode == 11)
694: #set ($coachViewUrl = "${coachViewUrl}&sort=ab&pos=h")
695: #end
696:
697: #if ($enumCode == 7 || $enumCode == 8 || $enumCode > 11) #else
698: <li class="nav-item" data-skip="true"><a href="$coachViewUrl" target="_blank" class="nav-link text-nowrap text-center">Coach's View</a></li>
699: #end
700: #end
701:
702: #macro (printTabs)
703: $request.setAttribute("icl-responsive-tabs-script", true)
704:
705: <div class="tab-nav">
706: <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs" role="tablist">
707: #printTab("profile", "Team Profile")
708:
709: #if ($showRoster)
710: #printTab("roster", "Roster")
711: #end
712:
713: #printTab("lineup", "Lineup")
714: #printTab("gamelog", "Game Log")
715: #printTab("splits", "Split Stats")
716:
717: #if ($showAttendance)
718: #printTab("attendance", "Attendance")
719: #end
720:
721: #printCoachViewUrl
722: </ul>
723: </div>
724: #end ## printTabs
725:
726: #macro (printFilters)
727: <div class="p-3 border my-3 d-print-none">
728: <div class="btn-toolbar d-flex justify-content-between gap-3 flex-column flex-sm-row flex-sm-nowrap" role="toolbar" aria-label="Standings tool bar">
729: <div class="flex-fill">
730: <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
731: $!request.setAttribute("pageObj", $page)
732: $website.includeAgain("conf-season-filter-template")
733: </div>
734: </div>
735: <div class="" role="group" aria-label="Print friendly version">
736: <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
737: </div>
738: </div>
739: </div>
740: #end ## printFilters
741: ############ END MACROS #############
742:
743: #set ($pageTitle = $page.title)
744: #if($pageTitle.trim().length() == 0)
745: #set($pageTitle = $page.sectionPage.getTitle())
746: #end
747:
748: #if ($pageTitle.trim().length() == 0)
749: #set ($season = "")
750: #if ($page.url.matches(".*/\d{4}-\d{2}/.*"))
751: #set ($truncateStr = $page.url.split("/\d{4}-\d{2}/").get(0))
752: #set ($season = $page.url.replace($truncateStr, "").substring(1, 8))
753: #end
754:
755: #set ($gender = "")
756: #if ($sport.enumCode == 6 or $sport.enumCode == 10)
757: #else
758: #if ($page.url.matches(".*/sports/m.*") || $page.url.matches(".*/sports/m-*"))
759: ##set ($gender = "Men's")
760: #elseif ($page.url.matches(".*/sports/w.*") || $page.url.matches(".*/sports/w-*"))
761: ##set ($gender = "Women's")
762: #end
763: #end
764:
765: #set ($pageTitle = "${season} ${gender} ${sport} Statistics")
766:
767: #end
768:
769: #if ($attributes.get("school_name").length() > 0)
770: #set ($pageTitle = "${pageTitle} - ${attributes.get('school_name')}")
771: #end
772:
773: $!request.setAttribute("pageTitle", "${pageTitle}")
774:
775: <head><title>$pageTitle</title></head>
776:
777:
778: <div class="page-content team-stats">
779:
780: <h1>$pageTitle</h1>
781:
782: #printFilters
783:
784: ## TEAM HIGHLIGHT STATS
785: <div class="my-3">#printHighlights</div>
786:
787: ## TABS
788: <div class="tabs-container my-3">
789: #printTabs
790:
791: <div class="tab-content p-3 border border-top-0">
792:
793: ## TEAM PROFILE
794: <div #printPaneAttrs("profile")>
795:
796: <div class="row">
797: <div class="col-lg">
798: <div class="mb-3">
799: <h5>Team Summary</h5>
800: <div class="stats-container table-responsive">
801: $website.include("${page.sectionPage.sectionPage.url}/schedule?teamId=${teamId}&tmpl=schedule-data-template")
802: </div>
803: </div>
804: <div class="mb-3">
805: <h5>Recent Results</h5>
806: <div class="stats-container table-responsive">#printRecentGames</div>
807: </div>
808: </div>
809: <div class="col-lg">
810: <div class="mb-3">
811: <h5>Team Stats</h5>
812: <div class="stats-container table-responsive">
813: $website.include("${page.sectionPage.url}/teams?tmpl=stats-teams-rank-template&rank=${teamId}")
814: </div>
815: </div>
816: </div>
817: </div>
818: </div> ## team profile
819:
820: ## ROSTER
821: #if ($showRoster)
822: <div #printPaneAttrs("roster")>
823: $website.includeAgain("../players?teamId=${teamId}&view=roster&tmpl=stats-bios-template")
824: </div>
825: #end
826:
827: ## LINEUP
828: <div #printPaneAttrs("lineup")>
829: ## start of overall/conference
830: #set ($url = $request.requestURI)
831: #printLineupTabs()
832:
833: Download roster:
834: <a href="../players?teamId=${attributes.teamId}&view=ext">${rosterExtension} (First Last) </a> |
835: <a href="../players?teamId=${attributes.teamId}&view=ext&type=lf"> ${rosterExtension} (Last, First)</a>
836: #if ($rosterExtraExtension)
837: <a href="../players?teamId=${attributes.teamId}&view=exte">${rosterExtraExtension} (First Last)</a> |
838: <a href="../players?teamId=${attributes.teamId}&view=exte&type=lf">${rosterExtraExtension} (Last, First)</a>
839: #end
840: </div> ## lineup
841:
842: ## GAMELOG
843: <div #printPaneAttrs("gamelog")>
844: <div class="stats-container table-responsive">
845: #if ($gamelogsCategoriesLabels && $gamelogsCategoriesLabels.size() > 1)
846: #printCategories($gamelogsCategoriesLabels, 'gamelog')
847: #else
848: #gamelogData($pos)
849: #end
850: </div>
851: </div>
852:
853: ## SPLITS
854: <div #printPaneAttrs("splits")>
855: <div class="stats-container table-responsive">
856: #if ($briefsTeamCategoriesLabels && $briefsTeamCategoriesLabels.size() > 1)
857: #printCategories($briefsTeamCategoriesLabels, 'splits')
858: #else
859: #splitsTeamNetworkData($pos)
860: #end
861: </div>
862: </div> ## splits
863:
864: ## ATTENDANCE
865: <div #printPaneAttrs("attendance")>
866: <div class="stats-container table-responsive">#printAttendance</div>
867: </div>
868: </div> ## tab-content
869: </div> ## tab-container
870: </div> ## stats-container
871: $wiki.su
|