Skip to navigation Skip to content Skip to footer

2022-23 Football Statistics - Thomas

  • Yds
    250.3
  • Rush
    12.3
  • Pass
    238.0
  • Pts/game
    14.7
  • Yds allowed
    226.3
  • Rush allowed
    15.0
  • Pass allowed
    211.3
  • Pts allowed/game
    12.5
Team Summary
Title Record
Overall 17-3 (.850)
Conference 8-1 (.889)
Streak Lost 1
Home 9-0
Away 4-1
Neutral 4-2
Recent Results
Date Opponent Result
May 18 vs. Warner W, 28-0
May 18 vs. St. Thomas W, 19-0
May 19 vs. Ottawa L, 19-0
May 20 Keiser W, 20-7
May 20 vs. Ottawa W, 25-13
May 20 vs. Ottawa L, 18-13
Team Stats
Statistics Overall Conf
Games 6 6th 3 10th
Scoring 88 8th 50 8th
Points per game 14.7 7th 16.7 7th
Total offense 1502 4th 693 8th
Yards per game 250.3 6th 231.0 6th
Passing yards 1428 5th 618 9th
Comp-Att-Int 160-242-70 5th 66-106-64 9th
Passing yards per game 238.0 5th 206.0 7th
Passing yards per attempt 5.9 6th 5.8 6th
Passing yards per completion 8.9 7th 9.4 6th
Passing touchdowns 11 8th 5 9th
Rushing yards 74 7th 75 5th
Rushing attempts 29 12th 15 12th
Rushing yards per game 12.3 8th 25.0 4th
Yards per rush 2.6 5th 5.0 3rd
Rushing touchdowns 3 5th 3 5th
1st downs 58 5th 20 9th
Rushing 1st downs 3 10th 2 9th
Passing 1st downs 53 4th 18 8th
Penalty 1st downs 2 7th 0 10th
1st downs per game 9.7 3rd 6.7 7th
3rd-down conversions 14-43 4th 4-13 8th
3rd down % 33% 4th 31% 4th
4th-down conversions 5-17 8th 0-5 15th
4th down % 29% 8th 0% 10th
Kick returns (No.-Yards) 11-52 2nd 0-0 14th
Kick return average 4.7 1st - -
Punt returns (No.-Yards) 13-22 9th 6-1 10th
Punt return average 1.7 12th 0.2 10th
Field goals 0-0 14th 0-0 14th
PATs 2-6 4th 0-0 14th
PAT % 33.3% 5th - -
Punts (No.-Yards) 11-338 10th 7-226 9th
Average per punt 30.7 1st 32.3 1st
Red zone scores 9-19 4th 5-8 5th
Red zone % 47% 11th 63% 7th
Red zone touchdowns 9-19 4th 5-8 5th
Red zone touchdown % 47% 11th 63% 7th
Fumbles-lost 0-0 14th 0-0 14th
Fumbles recovered 0 2nd 0 2nd
Defensive INTs 9 6th 5 8th
Interception returns (No.-Yds) 9-27 10th 5-27 9th
Interception return average 3.0 12th 5.4 9th
Defensive TDs 0 9th 0 11th
Tackles 144 8th 63 10th
Sacks 6 6th 2 10th
Penalties 14 8th 9 7th
Penalty yards 118 9th 78 8th
Time of possession per game 26:28 2nd 27:26 2nd
Home Attendance 50 6th 50 6th
Home Attendance average 50 6th 50 6th
Passing
# Name Yr Pos gp comp att pct yds y/g y/a td int lg effic
13 Alexa Wilson 6 148 227 65.2% 1368 228.0 6.0 8 9 48 119.5
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

Rushing
# Name Yr Pos gp rush yds y/g avg td lg fum lost
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

Receiving
# Name Yr Pos gp rec rec/g yds y/g avg td lg
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

Kicking
# Name Yr Pos gp fgm fga pct lg xpm xpa pct pts
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

Punting
# Name Yr Pos gp punt yds avg lg in20 fc tb blk
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

Returns
# Name Yr Pos kr yds avg td lg pr yds avg td lg
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

All-Purpose
played in 75% of team games
# Name Yr Pos gp rush rcv pr kr yds ypg
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

Scoring
# Name Yr Pos pts pts/g rush rec kr pr int fum xpm fgm 2pt misc
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

Defense
# Name Yr Pos gp tkl ast tot tkl/g sck yds tfl yds ff fr yds int yds brup blk
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

Passing
# Name Yr Pos gp comp att pct yds y/g y/a td int lg effic
13 Alexa Wilson 3 58 95 61.1% 557 185.7 5.9 3 3 48 114.4
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

Rushing
# Name Yr Pos gp rush yds y/g avg td lg fum lost
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

Receiving
# Name Yr Pos gp rec rec/g yds y/g avg td lg
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

Kicking
# Name Yr Pos gp fgm fga pct lg xpm xpa pct pts
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

Punting
# Name Yr Pos gp punt yds avg lg in20 fc tb blk
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

Returns
# Name Yr Pos kr yds avg td lg pr yds avg td lg
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

All-Purpose
Scoring
Defense
Download roster: FRO (First Last) | FRO (Last, First) FRX (First Last) | FRX (Last, First)
Date Opponent Score yds pass c-a comp % rush r y/r int fum tack sac pen yds top
Feb 18 St. Thomas W, 26-18 - - - - - - - - - - - - -
Feb 25 at Keiser W, 7-0 151 137 16-28 57% 14 3 4.7 1 - 18.0 - 7 20:06
Mar 4 Florida Memorial W, 40-0 - - - - - - - - - - - - -
Mar 13 at Campbellsville W, 25-0 - - - - - - - - - - - - -
Mar 14 Reinhardt W, 39-0 - - - - - - - - - - - - -
Mar 14 vs. Cottey (MO) W, 38-6 - - - - - - - - - - - - -
Mar 24 at Webber International W, 33-6 - - - - - - - - - - - - -
Mar 25 at Warner W, 35-0 - - - - - - - - - - - - -
Mar 30 Keiser W, 25-6 272 267 23-34 68% 5 4 1.3 2 - 28.0 2 45 24:19
Apr 6 Webber International W, 19-6 - - - - - - - - - - - - -
Apr 14 at St. Thomas L, 19-18 270 214 27-44 61% 56 8 7.0 2 - 17.0 - 26 37:53
Apr 15 at Florida Memorial   - - - - - - - - - - - - -
Apr 19 Warner W, 45-0 - - - - - - - - - - - - -
Apr 28 Webber International W, 33-14 - - - - - - - - - - - - -
Apr 29 St. Thomas W, 26-19 - - - - - - - - - - - - -
May 18 vs. Warner W, 28-0 - - - - - - - - - - - - -
May 18 vs. St. Thomas W, 19-0 - - - - - - - - - - - - -
May 19 vs. Ottawa L, 19-0 198 193 28-46 61% 5 1 5.0 1 0 27.0 2 10 26:05
May 20 Keiser W, 20-7 - - - - - - - - - - - - -
May 20 vs. Ottawa W, 25-13 313 311 33-46 72% 2 6 0.3 3 0 31.0 2 10 25:07
May 20 vs. Ottawa L, 18-13 298 306 33-44 75% -8 7 -1.1 0 0 23.0 0 20 25:17
gp td fg xpt 2pc dxp saf pts ppg
Total 6 14 0 2 2 0 0 88 14.7
Conference 3 8 - - 2 - - 50 16.7
Exhibition - - - - - - - - -
 
Home 1 4 - - 1 - - 25 25.0
Away 2 4 - - 1 - - 25 12.5
Neutral 3 6 0 2 0 0 0 38 12.7
 
Wins 3 9 0 1 2 0 0 57 19.0
Losses 3 5 0 1 0 0 0 31 10.3
 
February 1 1 - - 1 - - 7 7.0
March 1 4 - - 1 - - 25 25.0
April 1 3 - - - - - 18 18.0
May 3 6 0 2 0 0 0 38 12.7
gp ppg pts yd/g pass y/g rush y/g tkl/g int fum rec sack td
Total 6 12.5 75 226.3 211.3 15.0 24.0 9 0 6 0
Conference 3 8.3 25 184.3 189.7 -5.3 21.0 5 0 2 0
Exhibition - - - - - - - - - - -
 
Home 1 6.0 6 170.0 197.0 -27.0 28.0 2 0 2 0
Away 2 9.5 19 191.5 186.0 5.5 17.5 3 0 - 0
Neutral 3 16.7 50 268.3 233.0 35.3 27.0 4 0 4 0
 
Wins 3 6.3 19 193.0 202.0 -9.0 25.7 6 0 4 0
Losses 3 18.7 56 259.7 220.7 39.0 22.3 3 0 2 0
 
February 1 0.0 0 162.0 162.0 - 18.0 1 0 - 0
March 1 6.0 6 170.0 197.0 -27.0 28.0 2 0 2 0
April 1 19.0 19 221.0 210.0 11.0 17.0 2 0 - 0
May 3 16.7 50 268.3 233.0 35.3 27.0 4 0 4 0
Date Opponent Score Attend
Feb 18 St. Thomas 26-18 Win -
Feb 25 at Keiser W, 7-0 320
Mar 4 Florida Memorial 40-0 Win -
Mar 13 at Campbellsville 25-0 Win -
Mar 14 Reinhardt 39-0 Win -
Mar 14 vs. Cottey (MO) 38-6 Win -
Mar 24 at Webber International 33-6 Win -
Mar 25 at Warner 35-0 Win -
Mar 30 Keiser W, 25-6 50
Apr 6 Webber International 19-6 Win -
Apr 14 at St. Thomas L, 19-18 50
Apr 15 at Florida Memorial   -
Apr 19 Warner 45-0 Win -
Apr 28 Webber International 33-14 Win -
Apr 29 St. Thomas 26-19 Win -
May 18 vs. Warner 28-0 Win -
May 18 vs. St. Thomas 19-0 Win -
May 19 vs. Ottawa L, 19-0 0
May 20 Keiser 20-7 Win -
May 20 vs. Ottawa W, 25-13 0
May 20 vs. Ottawa L, 18-13 0