Skip to navigation Skip to content Skip to footer

Player Stats

played in 75% of team games
Rk Name Team gp comp att pct yds y/g y/a td int lg effic
1 M Carrera Ottawa 19 392 545 71.9% 4401 231.6 8.1 74 9 66 181.3
2 A Wilson Thomas 6 148 227 65.2% 1368 228.0 6.0 8 9 48 119.5
3 M Tingen Warner 5 110 164 67.1% 1073 214.6 6.5 12 4 48 141.3
4 J Rhoden Keiser 12 249 387 64.3% 2462 205.2 6.4 31 9 57 139.6
5 S Wilson Webber International 6 144 206 69.9% 1197 199.5 5.8 11 3 44 133.4
6 H Neher St. Thomas 12 203 339 59.9% 2349 195.8 6.9 30 12 56 140.2
7 M Nunez Midland 6 120 200 60.0% 1148 191.3 5.7 8 11 64 110.4
8 B Hernandez-Silva Kansas Wesleyan 14 208 348 59.8% 2450 175.0 7.0 43 10 58 153.9
9 J Haberstock Cottey (MO) 4 55 101 54.5% 401 100.3 4.0 3 4 61 89.7
10 A McKinley Reinhardt (Ga.) 5 31 57 54.4% 338 67.6 5.9 3 9 66 90.0
11 S Barnes Saint Mary's 5 35 80 43.8% 337 67.4 4.2 2 6 31 72.4
12 A Hooks Saint Mary's 5 47 103 45.6% 331 66.2 3.2 0 11 37 51.3
13 H Young Keiser 12 62 81 76.5% 734 61.2 9.1 12 3 60 194.1
14 K Wimbush Reinhardt (Ga.) 5 30 51 58.8% 207 41.4 4.1 1 4 25 83.7
15 K Rome Bethel (KS) 3 22 59 37.3% 109 36.3 1.8 0 3 13 42.6
16 M Quinn Ottawa 18 42 56 75.0% 429 23.8 7.7 5 1 29 165.2
17 D Branham Reinhardt (Ga.) 5 12 29 41.4% 106 21.2 3.7 0 4 38 44.5
18 J Marrero Warner 5 11 19 57.9% 73 14.6 3.8 1 1 12 97.0
19 A Corulla Cottey (MO) 4 11 29 37.9% 51 12.8 1.8 0 1 12 45.8
There was a problem with a Velocity script
Page/stats-bios-template
ErrorError invoking method 'get(java.lang.Integer)' in [Ljava.lang.String; at cjksntz2wn52hh7y/stats-bios-template[line 299, 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 ($isSharedMeets = true)
12: #if ($sport and $sport.statistics == true)
13:     #set ($isSharedMeets = false)
14: #end
15: 
16: #set ($showTotalRow = false)
17: #if ($options.get("stats_individual_show_totals_row") and $options.get("stats_individual_show_totals_row").equalsIgnoreCase("show"))
18:     #set ($showTotalRow = true)
19: #end
20: 
21: #set ($isIncluded = $website.isIncluded())
22: 
23: #set ($isAjax = false)
24: #if ($request.getParameter('ajax').length() > 0)
25:     #set ($isAjax = true)
26: #end
27: 
28: #set ($idLength = 0)
29: #set ($idLength = $formatter.escapeXml($request.getParameter("id")).length())
30: #set ($teamCount = $page.getTeamIDs().size())
31: 
32: #set ($teamId = '')
33: #if ($request.getParameter("teamId").length() > 0)
34:     #set ($teamId = $request.getParameter("teamId"))
35: #end
36: 
37: #set ($isSingleTeam = false)
38: #if ($teamId.length() != 0 or $teamCount == 1)
39:     #set ($isSingleTeam = true)
40: #end
41: 
42: #if ($teamCount == 1 and (not $isIncluded) and $idLength == 0 and not $isSharedMeets)
43:     $website.decorate("")
44:     #set ($targetURL = "${page.url}/../teams?view=lineup")
45:     $response.sendRedirect($targetURL)
46: #stop
47: #end
48: 
49: ## STAT LABELS
50: $website.includeAgain("stats-labels")
51: #set ($statLabels = $!request.getAttribute("statLabels"))
52: 
53: #set ($pos = "")
54: #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
55: 
56: #if ($pos.length() == 0 and $briefsDefaultCategoryPosition and not $isIncluded and not $isSharedMeets)
57:     $website.decorate("")
58:     #set ($targetURL = "${page.url}?pos=" + $briefsDefaultCategoryPosition)
59:     #if($briefsDefaultSorting and $briefsDefaultSorting.containsKey($briefsDefaultCategoryPosition))
60:         #set ($targetURL = $targetURL + "&sort=" + $briefsDefaultSorting.get($briefsDefaultCategoryPosition))
61:     #end
62: 
63:     $response.sendRedirect($targetURL)
64: #stop
65: #end
66: 
67: ## We want to leave this undefined so we can test for that
68: #set ($minEsc = $formatter.escapeXml($request.getParameter("min")))
69: #if ($minEsc.length() > 0)
70:     #set ($min = $minEsc)
71: #end
72: 
73: #set ($cansort = $formatter.escapeXml($request.getParameter("cs")))
74: 
75: ## #set ($labels = $labels.get($positions.get($pos)))
76: 
77: #set ($url = $request.requestURI)
78: #set ($view = "")
79: #set ($view = $formatter.escapeXml($!request.getParameter("view")))
80: 
81: #set ($restriction = "0")
82: #set ($restrictionEsc = $formatter.escapeXml($request.getParameter("r")))
83: #if ($restrictionEsc.length() > 0)
84:     #set ($restriction = $restrictionEsc)
85: #end
86: 
87: $website.include("standings?tmpl=stats-standings-abbr-template")
88: #set ($teamAbbr = $request.getAttribute("teamAbbr"))
89: 
90: #*
91: <!--
92: Debug
93: URL: $url
94: isIncluded: $isIncluded
95: View: ${view}
96: Position: $pos
97: Sort: $sort
98: isAjax: $isAjax
99: isSharedMeets = $isSharedMeets
100: page.getTeamIDs.size() = $page.getTeamIDs().size()
101: teamId = $teamId
102: page.teams.entrySet() = $page.teams.entrySet().size()
103: isSingleTeam = $isSingleTeam
104: -->
105: *#
106: 
107: #if ($locale == "en_us")
108:     #set ($defLabel = "Defense")
109: #elseif ($locale == "en_gb")
110:     #set ($defLabel = "Defence")
111: #end
112: 
113: #macro (printTableHeader $label $class)
114:     ## Hack for now
115:     #set ($pos = "")
116:     #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
117:     #set ($labels = $labels.get($pos))
118: <th class="text-uppercase text-nowrap $class" #if($sort == $key) data-sort="1" #end data-key="$label" data-bs-toggle="tooltip" data-bs-placement="top" title="$!{labels.get($key)}">$label</th>
119: #end
120: 
121: #macro(printBriefsCategories $r)
122:     #set ($ariaLabel = "Overall Stats")
123:     #if ($r == "1")
124:         #set ($ariaLabel = "Conference Stats")
125:     #end
126:     #set ($briefsCategories = [])
127:     #if ($teamId.length() == 0 && $briefsCategoriesLabels)
128:         <div class="tab-container">
129:             #set ($activeCategory = "")
130:             #foreach ($entry in $briefsCategoriesLabels.entrySet())
131:                 #if ($foreach.first)
132:                     #set ($activeCategory = $entry.key)
133:                 #end
134:                 #if ($pos.length() > 0 && $entry.value.keySet().contains($pos))
135:                     #set ($activeCategory = $entry.key)
136:                 #end
137:             #end
138: 
139:             <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">
140:                 #foreach ($category in $briefsCategoriesLabels.entrySet())
141:                     <li class="tabs-category nav-item text-center">
142:                         <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}">$category.key</a>
143:                     </li>
144:                 #end
145:             </ul>
146: 
147:             <div class="tab-content py-3">
148:                 #foreach($category in $briefsCategoriesLabels.entrySet())
149: 
150:                     #set ($activeSubCategory = "")
151:                     #foreach ($subCategory in $category.value.entrySet())
152:                         #if ($foreach.first)
153:                             #set ($activeSubCategory = $subCategory.value)
154:                         #end
155:                         #if ($pos == $subCategory.key)
156:                             #set ($activeSubCategory = $subCategory.value)
157:                         #end
158:                     #end
159:                     <div class="tab-pane #if ($category.key == $activeCategory) active #end" id="stats-bio-${category.key.toLowerCase()}-${r}" data-pos="$pos">
160:                         <div class="tab-container">
161:                             <div class="d-flex flex-row text-nowrap align-items-center justify-content-center">
162:                                 <div class="secondary-tab-select-container flex-fill">
163:                                     <select class="tab-nav-select-helper form-select" id="stats-bios-tertiary-select" aria-label="Choose a stat group">
164:                                         #foreach($briefsCat in $briefsCategoriesLabels.get("${category.key}").entrySet())
165:                                             <option value="#stats-bio-subs-${briefsCat.key.toLowerCase()}-${r}" #if ($briefsCat.value == $activeSubCategory || $foreach.first) selected #end>$briefsCat.value</option>
166:                                         #end
167:                                     </select>
168:                                     <script>
169:                                         $('.tab-nav-select-helper').on('change', function(e) {
170:                                             var id = $(this).val();
171:                                             $('a[data-bs-target="' + id + '"]').tab('show');
172:                                         });
173:                                     </script>
174:                                 </div>
175:                             </div>
176:                             <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">
177:                                 #foreach($briefsCat in $briefsCategoriesLabels.get("${category.key}").entrySet())
178:                                     <li class="tabs-category nav-item">
179:                                         <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>
180:                                     </li>
181:                                 #end
182:                             </ul>
183: 
184:                             <div class="tab-content">
185:                                 #foreach($briefsCat in $briefsCategoriesLabels.get("${category.key}").entrySet())
186:                                     <div class="tab-pane #if ($briefsCat.value == $activeSubCategory) active #end" id="stats-bio-subs-${briefsCat.key.toLowerCase()}-${r}">
187:                                         #printPlayers($briefsCat.key, $r)
188:                                     </div>
189:                                 #end
190:                             </div>
191:                         </div>
192:                     </div>
193:                 #end
194:             </div>
195:         </div> ## tab-container
196:     #else
197:         #printPlayers($pos, $r)
198:     #end
199: #end  ## printBriefsCategories
200: 
201: #macro(printPlayers $p $r)
202:     $request.setAttribute("icl-dataTables-script", true)
203: 
204:     #set ($briefs = $briefs.get($positions.get($p)))
205: 
206:     #set ($sortOrder = "asc")
207:     #if (($sort == "gs") || ($sort == "gp") || ($sort == "pts") || ($sort == "ptspm"))
208:         #set ($sortOrder = "desc")
209:     #end
210:     
211:     ## player stats (conference, naia)
212:     #set ($searching = "true")
213:     #set ($paging = "true")
214:     #set ($info = "true")
215:     #set ($fixedColumnStart = 1)
216: 
217:     #if ($isIncluded || ($sort != 'name' && !$isSharedMeets))
218:         #set ($fixedColumnStart = 2)
219:     #end
220: 
221:     #if ($isIncluded)
222:         ## lineup pages
223:         #set ($searching = "false")
224:         #set ($paging = "false")
225:         #set ($info = "false")
226:     #end
227: 
228:     
229:     ## FAISAL CHANGES
230:     $!request.setAttribute("pageObj", $page)
231:     $website.includeAgain("get-conf-pages?pageName=teams")
232:     #set ($confPages = $!request.getAttribute("conf_pages"))
233:     #set ($confTeams = {})
234:     
235:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
236:     #foreach ($conf in $confPages)
237:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
238:     #end
239: 
240: <div class="stats-container table-responsive-via-datatables">
241:     <table class="table table-hover nowrap w-100" data-col-name="${sort}" data-sort-order="${sortOrder}" data-info="${info}" data-searching="${searching}" data-ordering="false" data-paging="${paging}" data-filter="false" data-responsive="false" data-fixed-column-start="${fixedColumnStart}" data-scroll-x="true" data-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
242:         #if ($minimum.length() > 0)
243:             <caption class="caption-side-top">$!minimum</caption>
244:         #end
245:         <thead class="thead-dark">
246:         <tr>
247:             #if ($isIncluded)
248:                 #printTableHeader("#", "text-center w-1")
249:             #elseif ($sort != 'name' && ! $isSharedMeets)
250:                 #printTableHeader("Rk", "text-center w-1")
251:             #end
252: 
253:             #if ($cansort == 'n' || $isSharedMeets)
254:                 #printTableHeader("Name", "text-left")
255:             #else
256:                 <th class="text-left text-uppercase text-nowrap">Name</th>
257:             #end
258: 
259:             #if ($isIncluded)
260:                 #printTableHeader("Yr", "text-center")
261:                 #printTableHeader("Pos", "text-center")
262:             #elseif ($isSharedMeets)
263:                 #printTableHeader("Yr", "text-center")
264:             #else
265:                 #printTableHeader("Team", "text-center")
266:             #end
267: 
268:             ## Hack for now
269:             #set ($pos = "")
270:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
271:             #set ($labels = $labels.get($pos))
272: 
273:             #foreach ($key in $briefs.keySet())
274:                 #if ($cansort == 'n')
275:                     #printTableHeader($briefs.get($key), "text-center")
276:                 #else
277:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
278:                         <a class="text-reset" href="${url}?sort=${key}&view=${view}&pos=${p}&r=${r}" aria-label="sort table using ${briefs.get($key)}" data-bs-toggle="tooltip" data-bs-placement="top" title="$!{labels.get($key)}">${briefs.get($key)}</a>
279:                     </th>
280:                 #end
281:             #end
282:         </tr>
283:         </thead>
284:         #set ($showCount = 0)
285:         #set ($rankValue = "abb")
286:         #set ($counter = 0)
287: 
288:         <tbody>
289:             #foreach ($individual in $individuals)
290:                 #if ($r == "1")
291:                     #set ($stats = $individual.statsConference)
292:                 #else
293:                     #set ($stats = $individual.stats)
294:                 #end
295: 
296:                 #set ($individualPosition = "")
297:                 #set ($individualPosition = $individual.position)
298:                 #set ($posVec = $individualPosition.split("/"))
299:                 #set ($individualPosition = $posVec[0])
300: 
301:                 #set ($show = "")
302: 
303:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
304:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
305:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
306:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
307:                     #if ($showPosition)
308:                         #set ($indPositionsList = $lineupShowPosition.get($p))
309:                         #foreach ($indPos in $indPositionsList)
310:                             #if ($individualPosition.equalsIgnoreCase($indPos))
311:                                 #set ($show = "y")
312:                             #end
313:                         #end
314:                     #end
315: 
316:                     #if ($showStat)
317:                         #set ($statsList = $lineupShowStat.get($p))
318:                         #foreach ($statElem in $statsList)
319:                             #if ($stats.get($statElem) > 0)
320:                                 #set ($show = "y")
321:                             #end
322:                         #end
323:                     #end
324: 
325:                     #if ($min)
326:                         #set ($test = 0)
327:                         #set ($test = $stats.get($min))
328:                         #if ($test > 0)
329:                             #set ($show = "y")
330:                         #end
331:                     #end
332:                 #else
333:                     #set ($show = "y")
334:                 #end
335: 
336:                 #if ($show.length() > 0)
337:                     #set ($showCount = $showCount + 1)
338:                     #if ($showCount <= 125)
339:                     <tr>
340:                         #if ($isIncluded)
341:                             <td class="text-nowrap text-center">${individual.uniform}</td>
342:                         #elseif ($sort != 'name' && ! $isSharedMeets)
343:                             <td class="text-nowrap text-center">
344:                                 ## Need to figure out what value is
345:                                 #set ($value = ${stats.get($sort)})
346:                                 #if (!($value == $rankValue))
347:                                 ##This is a new rank value... let's update our ranking
348:                                 #set ($rank = $showCount)
349:                                 #set ($rankValue = $value)
350:                             #end
351:                                 ${rank}
352:                             </td>
353:                         #end
354: 
355:                         <td class="text-nowrap text-left">
356:                             #if ($isSharedMeets)
357:                                 ${individual.firstName} ${individual.lastName}
358:                             #else
359:                                 <a href="${page.url}/${individual.pageName}">
360:                                     #if ($isIncluded)
361:                                         ${individual.firstName}
362:                                     #elseif ($individual.firstName.length() > 0)
363:                                         ${individual.firstName.substring(0, 1)}
364:                                     #end
365:                                     ${individual.lastName}
366:                                 </a>
367:                             #end
368:                         </td>
369: 
370:                         #if ($isIncluded)
371:                             <td class="text-nowrap text-center">$!{individual.year}</td>
372:                             <td class="text-nowrap text-center">
373:                                 #if ($individual.positionAbbreviation)
374:                                     $!individual.positionAbbreviation
375:                                 #else
376:                                     $!individual.position
377:                                 #end
378:                             </td>
379:                         #elseif ($isSharedMeets)
380:                             <td class="text-nowrap text-center">$!{individual.year}</td>
381:                         #else
382:                             #set ($teamname = "")
383:                             #set ($teamname = $individual.team)
384:                             
385:                             
386:                             #set ($teamURL = "teams?id=${individual.teamId}")
387:                             #foreach ($entry in $confTeams.entrySet())
388:                                 #if ($entry.value.teams.containsValue($teamname))
389:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
390:                                 #end
391:                             #end
392:                             
393: 
394:                             #if($teamAbbr.size() > 0)
395:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
396:                                 #*
397:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
398:                                 #set ($teamname = $teamAbbr.get($individual.team))
399:                                  *#
400:                             #end
401: 
402:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
403:                                 #if ($teamname.length() > 0)
404:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
405:                                     <a href="$teamURL">${teamname}</a>
406:                                 #end
407:                             </td>
408:                         #end
409: 
410:                         ## Briefs
411:                         #foreach ($key in $briefs.keySet())
412:                             #set ($value = "-")
413:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
414:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
415:                                 #if ($value.length() > 0)
416:                                     $value
417:                                 #else
418:                                     -
419:                                 #end
420:                             </td>
421:                         #end
422:                     </tr>
423:                     #end ## page limit
424:                 #end ## showing
425:             #end ## foreach individual
426:         </tbody>
427:         #if ($individuals.size() == 0)
428:             <caption>
429:                 #if ($isSharedMeets)
430:                     This team's roster is empty
431:                 #elseif ($hasBiosBeforeFilter)
432:                     No players meet the minimum
433:                 #else
434:                     No stats are available at this time
435:                 #end
436:             </caption>
437:         #end
438:     </table>
439: </div>
440:     #if ($isIncluded || $showTotalRow)
441:     <div class="table-totals mb-3 small text-start text-muted p-2">
442:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
443:             <div class="heading">Totals:</div>
444:             #set ($teamStats = $request.getAttribute("teamStats"))
445:             <div class="calculated-totals m-0">
446:                 #foreach ($key in $briefs.keySet())
447:                     #set ($value = "-")
448:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
449:                     <span class="uppercase key initialism">$briefs.get($key):</span><span class="value fw-bold m-0">#if ($value.length() > 0)${value}#else-#end</span>#if(!$foreach.last), #end
450:                 #end
451:             </div>
452:         </div>
453:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
454:             <div class="heading">Opponents:</div>
455:             <div class="calculated-totals m-0">
456:                 #foreach ($key in $briefs.keySet())
457:                     #set ($keyopp = "${key}opp")
458:                     #set ($value = "-")
459:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
460:                     <span class="uppercase key initialism">$briefs.get($key):</span><span class="value fw-bold m-0">#if ($value.length() > 0)${value}#else-#end</span>#if(!$foreach.last), #end
461:                 #end
462:             </div>
463:         </div>
464:     </div>
465:     #end
466: #end ## printPlayers
467: 
468: #macro (printFilters)
469:     <div class="py-3 border-top border-bottom my-3 d-print-none">
470:         <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">
471:             ## #printTeamsFilter
472:             <div class="flex-fill">
473:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
474:                     $!request.setAttribute("pageObj", $page)
475:                     $website.include("conf-season-filter-template")
476:                 </div>
477:             </div>
478:             <div class="" role="group" aria-label="Print friendly version">
479:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
480:             </div>
481:         </div>
482:     </div>
483: #end ## printFilters
484: 
485: ### END MACROS ###
486: 
487: ## TEAMS LAYOUTS FOR SHARED MEETS
488: #if ($isSharedMeets && !$isSingleTeam)
489: 
490:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
491:     #set ($teamsThreshold = 20)
492: 
493:     #if ($page.title.length() > 0)
494:     <h1>$page.title</h1>
495:     #else
496:     <h1>Teams</h1>
497:     #end
498: 
499:     #if ($teams.size() > $teamsThreshold)
500: 
501:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
502: 
503:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
504:         <div class="alphabet-filter-chars">
505:             <span class="alphabet-filter-border"> | </span>
506:             #foreach ($alphabet in $alphabets.split(""))
507:                 #if ($alphabet.length() > 0)
508:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
509:                     <span class="alphabet-filter-border"> | </span>
510:                 #end
511:             #end
512:         </div> ## alphabet-filter-char
513: 
514:     <div class="alphabet-filter-list">
515:     <div class="alphabet-filter-column">
516:         #set ($lastAlphabet = "")
517:         #set ($counter = 0)
518: 
519:         #foreach ($team in $teams)
520:             #set ($teamName = $team.value)
521: 
522:             #if ($teamName.charAt(0) != $lastAlphabet)
523:                 #set ($counter = $counter + 1)
524:                 #if ($counter > 1)
525:                 </div> ## alphabet-filter-section
526:                 #end
527:                 #if ($counter == 8 || $counter == 15)
528:                 </div> ## alphabet-filter-column
529:                 <div class="alphabet-filter-column">
530:                 #end
531:                 #set ($lastAlphabet = $teamName.charAt(0))
532:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
533:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
534:             #end
535:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
536:         #end
537:     </div> ## alphabet-filter-section
538:     </div> ## alphabet-filter-column
539:     </div> ## alphabet-filter-list
540:     </div> ## alphabet-filter
541: 
542:     #else ## plain list
543: 
544:     <div class="stats-container table-responsive">
545:         <table class="table table-hover">
546:             #foreach ($team in $teams)
547:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
548:             #end
549:             #if ($teams.size() == 0)
550:                 <tr><td>There are no teams that match this criteria</td></tr>
551:             #end
552:         </table>
553:     </div>
554: 
555:     #end ## teams threshold
556: 
557:     ## TEAMINFO ROSTER LAYOUT
558: #elseif ($isIncluded && $view == 'roster')
559: 
560:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
561: <div class="stats-container table-responsive">
562:     <table class="table table-hover">
563:         <thead class="thead-dark">
564:         <tr>
565:             <th scope="col" class="text-nowrap text-center w-1">#</th>
566:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
567:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
568:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
569:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
570:             #if ($baseball)
571:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
572:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
573:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
574:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
575:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
576:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
577:             #end
578:         </tr>
579:         </thead>
580:         <tbody>
581:             #foreach ($individual in $individuals)
582:             <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>
583:                 <td scope="row" class="text text-center">${individual.uniform}</td>
584:                 <td class="text text-left text-start pinned-col">
585:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
586:                 </td>
587:                 <td class="text-center">
588:                     #if ($individual.positionAbbreviation)
589:                 $!individual.positionAbbreviation
590:               #else
591:                         $!individual.position
592:                     #end
593:                 </td>
594:                 <td class="text-center">$!{individual.year}</td>
595:                 <td class="text-center">
596:                     #if($additionalRosterStatus)
597:                         $individual.playerStatus
598:                     #elseif ($individual.active)
599:                         Active
600:                     #else
601:                         Inactive
602:                     #end
603:                 </td>
604:                 #if ($baseball)
605:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
606:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
607:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
608:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
609:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
610:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
611:                 #end
612:             </tr>
613:             #end
614:         </tbody>
615:     </table>
616: </div>
617: 
618:     ## SHARED MEETS PLAYERS
619: #elseif ($isSharedMeets)
620: 
621:     #if ($teamId)
622:         #set ($playersPageTitle = $page.title)
623:         #foreach($team in $page.teams.entrySet())
624:             #if ($teamId == $team.key)
625:                 #set ($playersPageTitle = $team.value)
626:             #end
627:         #end
628:     <h1>$playersPageTitle</h1>
629:     #end
630: 
631:     #printPlayers($pos, $restriction)
632: 
633:     ## PLAYERS / LINEUP
634: #else
635: 
636:     ## do not show these options on the lineup page
637:     #if (not $isIncluded)
638: 
639:         #if ($isAjax)
640:             $website.decorate('')
641:             #printPlayers($pos $restriction)
642:         #stop
643:         #end
644: 
645:         ## ARCHIVES
646:         #if ($page.contentType == "stat/bios")
647:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
648:         #end
649: 
650:         #if ($page.title.length() > 0 && !$isSharedMeets)
651:         <h1>$page.title</h1>
652:         #else
653:         <h1>Player Stats</h1>
654:         #end
655: 
656:         #printFilters
657: 
658:         ##if ($minimum.length() > 0)
659:     <!--<div class="clearfix align-right">$!minimum</div>-->
660:         ##end
661: 
662:         #if ($showconf && !$isSharedMeets)
663:             $request.setAttribute("icl-responsive-tabs-script", true)
664:             <div class="tab-container">
665:                 <div class="tab-nav m-0">
666:                     <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">
667:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
668:                             <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>
669:                         </li>
670:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
671:                             <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>
672:                         </li>
673:                     </ul>
674:                 </div>
675: 
676:                 <div class="tab-content p-3 border">
677:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
678:                         #printBriefsCategories("0")
679:                     </div>
680:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
681:                         #printBriefsCategories("1")
682:                     </div>
683:                 </div>
684:             </div> ## tab-container overall/conf
685:         #else
686:             #printBriefsCategories($restriction)
687:         #end
688: 
689:     #else
690:         #printBriefsCategories($restriction)
691:     #end ## not isIncluded
692: #end ## LAYOUTS
693: 
694: $wiki.su