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