Player Stats

Rk Name Team gp comp att pct yds y/g y/a td int lg effic
1 A Siposs Albany (N.Y.) 1 2 2 100.0% 189 189.0 94.5 2 0 99 1223.8
2 A Rebello Bethel (Tenn.) 1 1 1 100.0% 85 85.0 85.0 1 0 85 1144.0
3 T Johnson Bethel (Tenn.) 1 1 1 100.0% 50 50.0 50.0 1 0 50 850.0
4 M Fischer Bethel (Tenn.) 2 1 1 100.0% 85 42.5 85.0 1 0 85 1144.0
5 A Woodland Bethel (Tenn.) 1 1 1 100.0% 25 25.0 25.0 0 0 25 310.0
There was a problem with a Velocity script
Pagesports/fball/2022-2023/stats-bios-template
ErrorError invoking method 'get(java.lang.Integer)' in [Ljava.lang.String; at lcwrjguvxrygus24sports/fball/2022-2023/stats-bios-template[line 349, column 52]
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: #set ($showconf = true)
7: #if ($options.get("stats_hide_conference") and $options.get("stats_hide_conference").equalsIgnoreCase("hide"))
8:     #set ($showconf = false)
9: #end
10: 
11: #set ($showNational = false)
12: #if ($options.get("stats_show_national") and $options.get("stats_show_national").equalsIgnoreCase("show"))
13:     #set ($showNational = true)
14: #end
15: 
16: #set ($showDob = true)
17: #if ($options.get("stats_hide_dob") and $options.get("stats_hide_dob").equalsIgnoreCase("hide"))
18:     #set ($showDob = false)
19: #end
20: 
21: #set ($showHometown = true)
22: #if ($options.get("stats_hide_hometown") and $options.get("stats_hide_hometown").equalsIgnoreCase("hide"))
23:     #set ($showHometown = false)
24: #end
25: 
26: #set ($isSharedMeets = true)
27: #if ($sport and $sport.statistics == true)
28:     #set ($isSharedMeets = false)
29: #end
30: 
31: #set ($isIncluded = $website.isIncluded())
32: 
33: #set ($isAjax = false)
34: #if ($request.getParameter('ajax').length() > 0)
35:     #set ($isAjax = true)
36:     #set ($isIncluded = true)
37: #end
38: 
39: #set ($idLength = 0)
40: #set ($idLength = $formatter.escapeXml($request.getParameter("id")).length())
41: #set ($teamCount = $page.getTeamIDs().size())
42: 
43: #set ($teamId = '')
44: #if ($request.getParameter("teamId").length() > 0)
45:     #set ($teamId = $request.getParameter("teamId"))
46: #end
47: 
48: #set ($isSingleTeam = false)
49: #if ($teamId.length() != 0 or $teamCount == 1)
50:     #set ($isSingleTeam = true)
51: #end
52: 
53: #if ($teamCount == 1 and (not $isIncluded) and $idLength == 0 and not $isSharedMeets)
54:     $website.decorate("")
55:     #set ($targetURL = "${page.url}/../teams?view=lineup")
56:     $response.sendRedirect($targetURL)
57:     #stop
58: #end
59: 
60: ## STAT LABELS
61: #if($request.getAttribute("statLabels").size() < 1)
62:     $website.includeAgain("stats-labels")
63:     #set ($statLabels = $!request.getAttribute("statLabels"))
64: #end
65: 
66: 
67: #set ($pos = "")
68: #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
69: 
70: #if ($pos.length() == 0 and $briefsDefaultCategoryPosition and not $isIncluded and not $isSharedMeets)
71:     $website.decorate("")
72:     #set ($targetURL = "${page.url}?pos=" + $briefsDefaultCategoryPosition)
73:     #if($briefsDefaultSorting and $briefsDefaultSorting.containsKey($briefsDefaultCategoryPosition))
74:         #set ($targetURL = $targetURL + "&sort=" + $briefsDefaultSorting.get($briefsDefaultCategoryPosition))
75:     #end
76: 
77:     $response.sendRedirect($targetURL)
78: #stop
79: #end
80: 
81: ## We want to leave this undefined so we can test for that
82: #set ($minEsc = $formatter.escapeXml($request.getParameter("min")))
83: #if ($minEsc.length() > 0)
84:     #set ($min = $minEsc)
85: #end
86: 
87: #set ($cansort = $formatter.escapeXml($request.getParameter("cs")))
88: 
89: ## #set ($labels = $labels.get($positions.get($pos)))
90: 
91: #set ($url = $request.requestURI)
92: #if($isAjax)
93:     #if($request.getParameter("requri").length() > 0)
94:         #set ($url = $formatter.escapeXml($!request.getParameter("requri")))
95:     #end
96: #end
97: 
98: #set ($view = "")
99: #set ($view = $formatter.escapeXml($!request.getParameter("view")))
100: 
101: #set ($restriction = "0")
102: #set ($restrictionEsc = $formatter.escapeXml($request.getParameter("r")))
103: #if ($restrictionEsc.length() > 0)
104:     #set ($restriction = $restrictionEsc)
105: #end
106: 
107: #if($request.getAttribute("teamAbbr").size() < 1)
108:     $website.include("standings?tmpl=stats-standings-abbr-template")
109:     #set ($teamAbbr = $request.getAttribute("teamAbbr"))
110: #end
111: 
112: 
113: #*
114: <!--
115: Debug
116: URL: $url
117: isIncluded: $isIncluded
118: View: ${view}
119: Position: $pos
120: Sort: $sort
121: isAjax: $isAjax
122: isSharedMeets = $isSharedMeets
123: page.getTeamIDs.size() = $page.getTeamIDs().size()
124: teamId = $teamId
125: page.teams.entrySet() = $page.teams.entrySet().size()
126: isSingleTeam = $isSingleTeam
127: -->
128: *#
129: 
130: #if ($locale == "en_us")
131:     #set ($defLabel = "Defense")
132: #elseif ($locale == "en_gb")
133:     #set ($defLabel = "Defence")
134: #end
135: 
136: #macro (printTableHeader $label $class)
137:     ## Hack for now
138:     #set ($pos = "")
139:     #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
140:     #set ($labels = $labels.get($pos))
141:     <th class="text-uppercase text-nowrap $class #if($sort == $key)table-active#end" #if($sort == $key) data-sort="1" #end data-key="$label" data-bs-toggle="tooltip" data-bs-placement="top" title="$!{labels.get($key)}"><abbr title="$!{labels.get($key)}">$label</abbr></th>
142: #end
143: 
144: #macro(printBriefsCategories $r)
145:     $request.setAttribute("icl-responsive-tabs-script", true)
146:     #set ($ariaLabel = "Overall Stats")
147:     #if ($r == "1")
148:         #set ($ariaLabel = "Conference Stats")
149:     #elseif ($r == "2")
150:         #set ($ariaLabel = "NJCAA Stats")
151:     #end
152:     #set ($briefsCategories = [])
153: 
154:     #if ($teamId.length() == 0 && $briefsCategoriesLabels)
155:     <div class="tab-container">
156:         #set ($activeCategory = "")
157:         #foreach ($entry in $briefsCategoriesLabels.entrySet())
158:             #if ($foreach.first)
159:                 #set ($activeCategory = $entry.key)
160:             #end
161:             #if ($pos.length() > 0 && $entry.value.keySet().contains($pos))
162:                 #set ($activeCategory = $entry.key)
163:             #end
164:         #end
165: 
166:         ## Only render outer tabs if more than 1 category
167:         #if ($briefsCategoriesLabels.size() > 1)
168:             <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="stats-bios-secondary-tabs" role="tablist">
169:                 #foreach ($category in $briefsCategoriesLabels.entrySet())
170:                     <li class="tabs-category nav-item text-center" role="presentation">
171:                         <a class="nav-link #if ($category.key == $activeCategory) active #end" href="#" role="tab" data-bs-toggle="tab" data-bs-target="#stats-bio-${category.key.toLowerCase()}-${r}" aria-label="${ariaLabel}: ${category.key}">
172:                             $category.key.replace("_", " ")
173:                         </a>
174:                     </li>
175:                 #end
176:             </ul>
177:         #end
178: 
179:         <div class="tab-content py-3">
180:             #foreach($category in $briefsCategoriesLabels.entrySet())
181:                 #set($categoryKey = $category.key)
182:                 #set ($activeSubCategory = "")
183:                 #foreach ($subCategory in $category.value.entrySet())
184:                     #if ($foreach.first)
185:                         #set ($activeSubCategory = $subCategory.value)
186:                     #end
187:                     #if ($pos == $subCategory.key)
188:                         #set ($activeSubCategory = $subCategory.value)
189:                     #end
190:                 #end
191: 
192:                 ## If only 1 category, skip "tab-pane" role
193:                 #if ($briefsCategoriesLabels.size() > 1)
194:                 <div class="tab-pane #if ($categoryKey == $activeCategory) active #end" id="stats-bio-${category.key.toLowerCase()}-${r}" role="tabpanel" data-pos="$pos">
195:                 #else
196:                 <div data-pos="$pos">
197:                 #end
198: 
199:                 <div class="tab-container">
200:                     <div class="d-flex flex-row text-nowrap align-items-center justify-content-center">
201:                         <div class="secondary-tab-select-container flex-fill">
202:                             <select class="tab-nav-select-helper form-select" id="stats-bios-tertiary-select" aria-label="Choose a stat group">
203:                                 #foreach($briefsCat in $briefsCategoriesLabels.get("${category.key}").entrySet())
204:                                     <option value="#stats-bio-subs-${briefsCat.key.toLowerCase()}-${r}" #if ($briefsCat.value == $activeSubCategory || $foreach.first) selected #end>$briefsCat.value</option>
205:                                 #end
206:                             </select>
207:                             <script>
208:                                 $('.tab-nav-select-helper').on('change', function(e) {
209:                                     var id = $(this).val();
210:                                     $('a[data-bs-target="' + id + '"]').tab('show');
211:                                     $('.dataTable').DataTable().columns.adjust().responsive.recalc();
212:                                 });
213:                             </script>
214:                         </div>
215:                     </div>
216: 
217:                     <ul class="d-none nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="stats-bios-tertiary-tabs" role="tablist">
218:                         #foreach($briefsCat in $briefsCategoriesLabels.get("${categoryKey}").entrySet())
219:                             <li class="tabs-category nav-item" role="presentation">
220:                                 <a class="nav-link #if ($briefsCat.value == $activeSubCategory) active #end" href="#" role="tab" data-bs-toggle="tab" data-bs-target="#stats-bio-subs-${briefsCat.key.toLowerCase()}-${r}" aria-label="${ariaLabel}: ${category.key}: ${briefsCat.value}">$briefsCat.value</a>
221:                             </li>
222:                         #end
223:                     </ul>
224: 
225:                     <div class="tab-content py-3">
226:                         #foreach($briefsCat in $briefsCategoriesLabels.get("${categoryKey}").entrySet())
227:                             <div class="tab-pane #if ($briefsCat.value == $activeSubCategory) active #end" id="stats-bio-subs-${briefsCat.key.toLowerCase()}-${r}" role="tabpanel">
228:                                 #printPlayers($briefsCat.key, $r)
229:                             </div>
230:                         #end
231:                     </div>
232:                 </div>
233:             </div>
234:             #end
235:         </div>
236:         </div>
237:     #else
238:         #printPlayers($pos, $r)
239:     #end
240: #end
241: 
242: 
243: #macro(printPlayers $p $r)
244:     $request.setAttribute("icl-dataTables-script", true)
245: 
246:     #set ($cols = $briefs.get($positions.get($p)))
247:     #if (!$cols)
248:         #set ($cols = $briefs.get($p))
249:     #end
250: 
251:     #set ($sortOrder = "asc")
252:     #if (($sort == "gs") || ($sort == "gp") || ($sort == "pts") || ($sort == "ptspm") || ($sort == "h") || ($sort == "ab") || ($sort == "rbi") || ($sort == "avg") || ($sort == "obp") || ($sort == "slg"))
253:         #set ($sortOrder = "desc")
254:     #end
255: 
256:     ## player stats (conference, naia)
257:     #set ($searching = "true")
258:     #set ($paging = "true")
259:     #set ($info = "true")
260:     #set ($fixedColumnStart = 1)
261:     #set ($ordering = "false")
262: 
263:     #if ($isIncluded || ($sort != 'name' && !$isSharedMeets))
264:         #set ($fixedColumnStart = 2)
265:     #end
266: 
267:     #if ($isIncluded)
268:         ## lineup pages
269:         #set ($searching = "false")
270:         #set ($paging = "false")
271:         #set ($info = "false")
272:         #set ($ordering = "true")
273:     #end
274: 
275:     #set ($tennis = $sport && $sport.XMLCode == "tngame")
276: 
277: <div class="stats-container table-responsive-via-datatables">
278:     <table class="table table-hover table-light nowrap w-100" data-col-name="${sort}" data-sort-order="${sortOrder}" data-info="${info}" data-searching="${searching}" data-ordering="${ordering}" data-paging="${paging}" data-filter="false" data-responsive="false" data-fixed-column-start="${fixedColumnStart}" data-scroll-x="true" data-buttons="true" data-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
279:         #if ($minimum.length() > 0)
280:             <caption class="caption-side-top">$!minimum</caption>
281:         #end
282:         <thead class="thead-dark">
283:         <tr>
284:             #if ($isIncluded)
285:                 #if(!$tennis)
286:                     #printTableHeader("#", "text-center w-1")
287:                 #end
288:             #elseif ($sort != 'name' && !$isSharedMeets)
289:                 #printTableHeader("Rk", "text-center w-1")
290:             #end
291: 
292:             #if ($cansort == 'n' || $isSharedMeets)
293:                 #printTableHeader("Name", "text-left")
294:             #else
295:                 <th class="text-left text-uppercase text-nowrap #if($sort.equals("name") && $ordering.equals("false")) table-active #end">Name</th>
296:             #end
297: 
298:             #if ($isIncluded)
299:                 #printTableHeader("Yr", "text-center")
300:                 #printTableHeader("Pos", "text-center")
301:             #elseif ($isSharedMeets)
302:                 #printTableHeader("Yr", "text-center")
303:             #else
304:                 #printTableHeader("Team", "text-center")
305:             #end
306: 
307:             ## Hack for now
308:             #set ($pos = "")
309:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
310:             #set ($labels = $labels.get($pos))
311:             
312:             
313:             #set($basketballReplace = "40")
314:             #if($sport == "Basketball")
315:                 #if ($individuals.size() > 0)
316:                     #set($basketballReplace = $individuals.get(0).stats.get("minpm").toString())
317:                 #end
318:             #end
319: 
320: 
321:             #foreach ($key in $cols.keySet())
322:                 #if ($cansort == 'n')
323:                     #printTableHeader($cols.get($key).replace("40",$basketballReplace), "text-center")
324:                 #else
325:                     <th class="text-center text-uppercase text-nowrap #if($sort == $key && $ordering.equals("false"))table-active#end" #if($sort == $key) data-sort="1" #end data-key="$key">
326:                         <a class="text-reset" href="${url}?sort=${key}&view=${view}&pos=${p}&r=${r}" aria-label="sort table using ${cols.get($key)}" data-sort-key="${key}" data-bs-toggle="tooltip" data-bs-placement="top" title="$!{labels.get($key)}"><abbr title="$!{labels.get($key)}">${cols.get($key).replace("40",$basketballReplace)}</abbr></a>
327:                     </th>
328:                 #end
329:             #end
330:         </tr>
331:         </thead>
332:         #set ($showCount = 0)
333:         #set ($rankValue = "abb")
334:         #set ($counter = 0)
335: 
336:         <tbody>
337:             #foreach ($individual in $individuals)
338:                 #if ($r == "1")
339:                     #set ($stats = $individual.statsConference)
340:                 #elseif ($r == "2")
341:                     #set ($stats = $individual.statsNational)
342:                 #else
343:                     #set ($stats = $individual.stats)
344:                 #end
345: 
346:                 #set ($individualPosition = "")
347:                 #set ($individualPosition = $individual.position)
348:                 #set ($posVec = $individualPosition.split("/"))
349:                 #set ($individualPosition = $posVec[0])
350: 
351:                 #set ($show = "")
352: 
353:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
354:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
355:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
356:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
357:                     #if ($showPosition)
358:                         #set ($indPositionsList = $lineupShowPosition.get($p))
359:                         #foreach ($indPos in $indPositionsList)
360:                             #if ($individualPosition.equalsIgnoreCase($indPos))
361:                                 #set ($show = "y")
362:                             #end
363:                         #end
364:                     #end
365: 
366:                     #if ($showStat)
367:                         #set ($statsList = $lineupShowStat.get($p))
368:                         #foreach ($statElem in $statsList)
369:                             #if ($stats.get($statElem) > 0)
370:                                 #set ($show = "y")
371:                             #end
372:                         #end
373:                     #end
374: 
375:                     #if ($min)
376:                         #set ($test = 0)
377:                         #set ($test = $stats.get($min))
378:                         #if ($test > 0)
379:                             #set ($show = "y")
380:                         #end
381:                     #end
382:                 #else
383:                     #set ($show = "y")
384:                 #end
385: 
386:                 #if ($show.length() > 0)
387:                     #set ($showCount = $showCount + 1)
388:                     #if ($showCount <= 125)
389:                     <tr>
390:                         #if ($isIncluded)
391:                             #if(!$tennis)
392:                                 <td class="text-nowrap text-center #if($sort.equals("uniform") && $ordering.equals("false")) table-active #end">${individual.uniform}</td>
393:                             #end
394:                         #elseif ($sort != 'name' && ! $isSharedMeets)
395:                             <td class="text-nowrap text-center">
396:                                 ## Need to figure out what value is
397:                                 #set ($value = ${stats.get($sort)})
398:                                 #if (!($value == $rankValue))
399:                                     ##This is a new rank value... let's update our ranking
400:                                     #set ($rank = $showCount)
401:                                     #set ($rankValue = $value)
402:                                 #end
403:                                 ${rank}
404:                             </td>
405:                         #end
406: 
407:                         <td class="text-nowrap text-left #if($sort.equals("name") && $ordering.equals("false")) table-active #end">
408:                             #if ($isSharedMeets)
409:                                 ${individual.firstName} ${individual.lastName}
410:                             #else
411:                                 <a href="${page.url}/${individual.pageName}">
412:                                     #if ($isIncluded)
413:                                         ${individual.firstName}
414:                                     #elseif ($individual.firstName.length() > 0)
415:                                         ${individual.firstName.substring(0, 1)}
416:                                     #end
417:                                     ${individual.lastName}
418:                                 </a>
419:                             #end
420:                         </td>
421: 
422:                         #if ($isIncluded)
423:                             <td class="text-nowrap text-center">$!{individual.year}</td>
424:                             <td class="text-nowrap text-center">
425:                                 #if ($individual.positionAbbreviation)
426:                                     $!individual.positionAbbreviation
427:                                 #else
428:                                     $!individual.position
429:                                 #end
430:                             </td>
431:                         #elseif ($isSharedMeets)
432:                             <td class="text-nowrap text-center">$!{individual.year}</td>
433:                         #else
434:                             #set ($teamname = "")
435:                             #set ($teamname = $individual.team)
436: 
437:                             ## TRY AND GRAB ALL THE TEAMS PAGES FROM WITHIN THE /CONF SECTION SETUP
438:                             ## THIS ALLOWS US TEAM NAMES TO LINK TO TEAMS STATS PAGE WITHIN THE /CONF SECTION IF SETUP
439:                             #*
440:                             $!request.setAttribute("pageObj", $page)
441:                             #if($request.getAttribute("conf_pages").size() < 1)
442:                                 $website.includeAgain("get-conf-pages?pageName=teams")
443:                                 #set ($confPages = $!request.getAttribute("conf_pages"))
444:                             #end
445: 
446:                             #set ($confTeams = {})
447: 
448:                             ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
449:                             #foreach ($conf in $confPages)
450:                                 #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
451:                             #end
452: 
453:                              *#
454: 
455:                             #set ($teamsURL = "teams?id=${individual.teamId}")
456:                             #*
457:                             #foreach ($entry in $confTeams.entrySet())
458:                                 #if ($entry.value.teams.containsValue($teamname))
459:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
460:                                 #end
461:                             #end
462: 
463:                              *#
464: 
465:                             #if($teamAbbr.size() > 0)
466:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
467:                                 #*
468:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
469:                                 #set ($teamname = $teamAbbr.get($individual.team))
470:                                  *#
471:                             #end
472: 
473:                             <td class="text-nowrap text-center #if($sort.equals("team") && $ordering.equals("false")) table-active #end">
474:                                 #if ($teamname.length() > 0)
475:                                     <a href="$teamsURL">${teamname}</a>
476:                                 #end
477:                             </td>
478:                         #end
479: 
480:                         ## Briefs
481:                         #foreach ($key in $cols.keySet())
482:                             #set ($value = "-")
483:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
484:                             <td class="text-center text-nowrap #if($sort == $key && $ordering.equals("false")) table-active #end" data-order="$tool.math.toDouble($value)">
485:                                 #if ($value.length() > 0)
486:                                     $value
487:                                 #else
488:                                     -
489:                                 #end
490:                             </td>
491:                         #end
492:                     </tr>
493:                     #end ## page limit
494:                 #end ## showing
495:             #end ## foreach individual
496:         </tbody>
497:         #if ($individuals.size() == 0)
498:             <caption>
499:                 #if ($isSharedMeets)
500:                     This team's roster is empty
501:                 #elseif ($hasBiosBeforeFilter)
502:                     No players meet the minimum
503:                 #else
504:                     No stats are available at this time
505:                 #end
506:             </caption>
507:         #end
508:     </table>
509: </div>
510: #end ## printPlayers
511: 
512: #macro (printFilters)
513:     <div class="page-filters d-print-none">
514:         <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">
515:             ## #printTeamsFilter
516:             <div class="flex-fill">
517:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
518:                     $!request.setAttribute("pageObj", $page)
519:                     $website.include("conf-season-filter-template")
520:                 </div>
521:             </div>
522:             <div class="" role="group" aria-label="Print friendly version">
523:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-link border text-decoration-none text-nowrap"><span class="fa fa-print"></span> Print</a>
524:             </div>
525:         </div>
526:     </div>
527: #end ## printFilters
528: 
529: ### END MACROS ###
530: 
531: ## TEAMS LAYOUTS FOR SHARED MEETS
532: #if ($isSharedMeets && !$isSingleTeam)
533: 
534:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
535:     #set ($teamsThreshold = 20)
536: 
537:     #if ($page.title.length() > 0)
538:     <h1>$page.title</h1>
539:     #else
540:     <h1>Teams</h1>
541:     #end
542: 
543:     #if ($teams.size() > $teamsThreshold)
544: 
545:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
546: 
547:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
548:         <div class="alphabet-filter-chars">
549:             <span class="alphabet-filter-border"> | </span>
550:             #foreach ($alphabet in $alphabets.split(""))
551:                 #if ($alphabet.length() > 0)
552:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
553:                     <span class="alphabet-filter-border"> | </span>
554:                 #end
555:             #end
556:         </div> ## alphabet-filter-char
557: 
558:     <div class="alphabet-filter-list">
559:     <div class="alphabet-filter-column">
560:         #set ($lastAlphabet = "")
561:         #set ($counter = 0)
562: 
563:         #foreach ($team in $teams)
564:             #set ($teamName = $team.value)
565: 
566:             #if ($teamName.charAt(0) != $lastAlphabet)
567:                 #set ($counter = $counter + 1)
568:                 #if ($counter > 1)
569:                 </div> ## alphabet-filter-section
570:                 #end
571:                 #if ($counter == 8 || $counter == 15)
572:                 </div> ## alphabet-filter-column
573:                 <div class="alphabet-filter-column">
574:                 #end
575:                 #set ($lastAlphabet = $teamName.charAt(0))
576:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
577:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
578:             #end
579:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
580:         #end
581:     </div> ## alphabet-filter-section
582:     </div> ## alphabet-filter-column
583:     </div> ## alphabet-filter-list
584:     </div> ## alphabet-filter
585: 
586:     #else ## plain list
587: 
588:     <div class="stats-container table-responsive">
589:         <table class="table table-hover">
590:             #foreach ($team in $teams)
591:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
592:             #end
593:             #if ($teams.size() == 0)
594:                 <tr><td>There are no teams that match this criteria</td></tr>
595:             #end
596:         </table>
597:     </div>
598: 
599:     #end ## teams threshold
600: 
601:     ## TEAMINFO ROSTER LAYOUT
602: #elseif ($isIncluded && $view == 'roster')
603: 
604:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
605:     #set ($tennis = $sport && $sport.XMLCode == "tngame")
606: 
607: <div class="stats-container table-responsive table-responsive-webkit-overflow-scroll-fix">
608:     <table class="table table-hover">
609:         <thead class="thead-dark">
610:         <tr>
611:             #if (!$tennis)
612:                 <th scope="col" class="text-nowrap text-center w-1">#</th>
613:             #end
614:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
615:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
616:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
617:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
618:             #if ($baseball)
619:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
620:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
621:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
622:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
623:                 #if ($showDob)
624:                     <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
625:                 #end
626:                 #if ($showHometown)
627:                     <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
628:                 #end
629:             #end
630:         </tr>
631:         </thead>
632:         <tbody>
633:             #foreach ($individual in $individuals)
634:             <tr data-additional-roster-status="$additionalRosterStatus" data-player-status="$individual.playerStatus" data-active="$individual.active" #if($additionalRosterStatus && $individual.playerStatus == "Inactive") class="table-warning #if(!$wiki.valid()) d-none #end" #end>
635:                 #if (!$tennis)
636:                     <td scope="row" class="text text-center">${individual.uniform}</td>
637:                 #end
638:                 <td class="text text-left text-start pinned-col">
639:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
640:                 </td>
641:                 <td class="text-center">
642:                     #if ($individual.positionAbbreviation)
643:                 $!individual.positionAbbreviation
644:               #else
645:                         $!individual.position
646:                     #end
647:                 </td>
648:                 <td class="text-center">$!{individual.year}</td>
649:                 <td class="text-center">
650:                     #if($additionalRosterStatus)
651:                         $individual.playerStatus
652:                     #elseif ($individual.active)
653:                         Active
654:                     #else
655:                         Inactive
656:                     #end
657:                 </td>
658:                 #if ($baseball)
659:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
660:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
661:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
662:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
663:                     #if ($showDob)
664:                         <td class="text-center">$!{individual.dataMap["born"]}</td>
665:                     #end
666:                     #if ($showHometown)
667:                         <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
668:                     #end
669:                 #end
670:             </tr>
671:             #end
672:         </tbody>
673:     </table>
674: </div>
675: 
676:     ## SHARED MEETS PLAYERS
677: #elseif ($isSharedMeets)
678: 
679:     #if ($teamId)
680:         #set ($playersPageTitle = $page.title)
681:         #foreach($team in $page.teams.entrySet())
682:             #if ($teamId == $team.key)
683:                 #set ($playersPageTitle = $team.value)
684:             #end
685:         #end
686:     <h1>$playersPageTitle</h1>
687:     #end
688: 
689:     #printPlayers($pos, $restriction)
690: 
691:     ## PLAYERS / LINEUP
692: #else
693: 
694:     ## do not show these options on the lineup page
695:     #if (not $isIncluded)
696: 
697:         #if ($isAjax)
698:             $website.decorate('')
699:             #printPlayers($pos $restriction)
700:         #stop
701:         #end
702: 
703:         ## ARCHIVES
704:         #if ($page.contentType == "stat/bios")
705:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
706:         #end
707: 
708:         <div class="page-content-header d-flex flex-column align-items-center gap-3 mb-3">
709:             #if ($page.title.length() > 0 && !$isSharedMeets)
710:             <h1>$page.title</h1>
711:             #else
712:             <h1>Player Stats</h1>
713:             #end
714: 
715:             #printFilters
716: 
717:         </div>
718: 
719:         ##if ($minimum.length() > 0)
720:     <!--<div class="clearfix align-right">$!minimum</div>-->
721:         ##end
722: 
723:         #if (($showconf || $showNational) && !$isSharedMeets)
724:             $request.setAttribute("icl-responsive-tabs-script", true)
725:             <div class="tab-container">
726:                 <div class="tab-nav m-0">
727:                     <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="stats-bios-primary-tabs" role="tablist">
728:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0" role="presentation">
729:                             <a class="nav-link text-nowrap text-center #if ($restriction == "0") active #end" href="${url}?sort=${sort}&view=${view}&pos=${pos}&r=0" role="tab" data-bs-toggle="tab" data-bs-target="#overall" aria-controls="overall" aria-selected="true">Overall</a>
730:                         </li>
731:                         #if($showconf)
732:                             <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0" role="presentation">
733:                                 <a class="nav-link text-nowrap text-center #if ($restriction == "1") active #end" href="${url}?sort=${sort}&view=${view}&pos=${pos}&r=1" role="tab" data-bs-toggle="tab" data-bs-target="#conf" aria-controls="conf">Conference</a>
734:                             </li>
735:                         #end
736:                         #if($showNational)
737:                             <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0" role="presentation">
738:                                 <a class="nav-link text-nowrap text-center #if ($restriction == "2") active #end" href="${url}?sort=${sort}&view=${view}&pos=${pos}&r=2" role="tab" data-bs-toggle="tab" data-bs-target="#national" aria-controls="national">NJCAA</a>
739:                             </li>
740:                         #end
741:                     </ul>
742:                 </div>
743: 
744:                 <div class="tab-content p-3 border">
745:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
746:                         #printBriefsCategories("0")
747:                     </div>
748:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
749:                         #printBriefsCategories("1")
750:                     </div>
751:                     <div class="tab-pane #if ($restriction.equals("2")) active #end" role="tabpanel" id="national">
752:                         #printBriefsCategories("2")
753:                     </div>
754:                 </div>
755:             </div> ## tab-container overall/conf
756:         #else
757:             #printBriefsCategories($restriction)
758:         #end
759: 
760:     #else
761:         #printBriefsCategories($restriction)
762:     #end ## not isIncluded
763: #end ## LAYOUTS
764: 
765: $wiki.su