Skip to navigation Skip to content Skip to footer

2022-23 Football Statistics - Webber International

  • Yds
    217.2
  • Rush
    8.7
  • Pass
    208.5
  • Pts/game
    21.0
  • Yds allowed
    263.2
  • Rush allowed
    23.0
  • Pass allowed
    240.2
  • Pts allowed/game
    22.7
Team Summary
Title Record
Overall 10-8 (.556)
Conference 4-7 (.364)
Streak Won 1
Home 6-2
Away 2-6
Neutral 2-0
Recent Results
Date Opponent Result
Apr 4 Campbellsville W, 33-0
Apr 6 at Thomas L, 19-6
Apr 19 at Keiser L, 39-19
Apr 22 Warner W, 27-13
Apr 28 at Thomas L, 33-14
May 19 vs. Midland W, 20-14
Team Stats
Statistics Overall Conf
Games 6 6th 6 5th
Scoring 126 5th 126 5th
Points per game 21.0 5th 21.0 4th
Total offense 1303 6th 1303 4th
Yards per game 217.2 7th 217.2 8th
Passing yards 1251 8th 1251 6th
Comp-Att-Int 151-216-4 6th 151-216-4 5th
Passing yards per game 208.5 6th 208.5 5th
Passing yards per attempt 5.8 8th 5.8 7th
Passing yards per completion 8.3 9th 8.3 8th
Passing touchdowns 13 6th 13 6th
Rushing yards 52 10th 52 7th
Rushing attempts 31 11th 31 8th
Rushing yards per game 8.7 10th 8.7 8th
Yards per rush 1.7 8th 1.7 6th
Rushing touchdowns 4 3rd 4 3rd
1st downs 13 13th 13 10th
Rushing 1st downs 1 12th 1 11th
Passing 1st downs 12 12th 12 10th
Penalty 1st downs 0 12th 0 12th
1st downs per game 2.2 13th 2.2 12th
3rd-down conversions 1-6 13th 1-6 11th
3rd down % 17% 10th 17% 10th
4th-down conversions 0-2 17th 0-2 17th
4th down % 0% 12th 0% 12th
Kick returns (No.-Yards) 0-0 17th 0-0 17th
Punt returns (No.-Yards) 7-98 4th 7-98 3rd
Punt return average 14.0 2nd 14.0 1st
Field goals 0-0 17th 0-0 17th
PATs 0-0 17th 0-0 17th
Punts (No.-Yards) 19-581 4th 19-581 2nd
Average per punt 30.6 2nd 30.6 3rd
Red zone scores 4-2 9th 4-2 9th
Red zone % 200% 1st 200% 1st
Red zone touchdowns 4-2 9th 4-2 9th
Red zone touchdown % 200% 1st 200% 1st
Fumbles-lost 0-0 17th 0-0 17th
Fumbles recovered 0 2nd 0 2nd
Defensive INTs 9 6th 9 5th
Interception returns (No.-Yds) 9-138 5th 9-138 5th
Interception return average 15.3 2nd 15.3 3rd
Defensive TDs 2 4th 2 4th
Tackles 172 6th 172 5th
Sacks 5 8th 5 7th
Penalties 6 3rd 6 3rd
Penalty yards 34 3rd 34 3rd
Time of possession per game 4:02 13th 4:02 12th
Home Attendance 140 5th 140 5th
Home Attendance average 70 3rd 70 3rd
Passing
# Name Yr Pos gp comp att pct yds y/g y/a td int lg effic
16 Samantha Wilson So QB 6 144 206 69.9% 1197 199.5 5.8 11 3 44 133.4
13 Ciara Zino Fr QB/S 5 3 5 60.0% 24 4.8 4.8 0 1 10 60.3
10 Gabby Franzose Fr WR/LB 4 1 1 100.0% 11 2.8 11.0 0 0 11 192.4
12 Denise Garcia Sr C/CB 4 1 2 50.0% 11 2.8 5.5 0 0 0 96.2
5 Kaitlyn Sigmundi Fr WR/S 6 2 2 100.0% 8 1.3 4.0 2 0 5 463.6
Totals:
gp:6, comp:151, att:216, pct:69.9%, yds:1251, y/g:208.5, y/a:5.8, td:13, int:4, lg:44, effic:134.7
Opponents:
gp:6, comp:158, att:244, pct:64.8%, yds:1441, y/g:240.2, y/a:5.9, td:20, int:9, lg:48, effic:134.0
Rushing
# Name Yr Pos gp rush yds y/g avg td lg fum lost
16 Samantha Wilson So QB 6 18 30 5.0 1.7 2 14 - -
14 Malia Domingo Sr RB/CB 3 1 12 4.0 12.0 0 9 - -
4 Emma Balacco Fr RB/CB 5 2 6 1.2 3.0 0 6 - -
5 Kaitlyn Sigmundi Fr WR/S 6 1 4 0.7 4.0 0 4 - -
1 Jasmine Henry Fr RB/R 5 4 2 0.4 0.5 0 5 - -
7 Hayden Rupe Sr WR/CB 6 1 1 0.2 1.0 1 1 - -
13 Ciara Zino Fr QB/S 5 4 -3 -0.6 -0.8 1 2 - -
Totals:
gp:6, rush:31, yds:52, y/g:8.7, avg:1.7, td:4, lg:14, fum:0, lost:0
Opponents:
gp:6, rush:35, yds:138, y/g:23.0, avg:3.9, td:1, lg:57, fum:0, lost:0
Receiving
# Name Yr Pos gp rec rec/g yds y/g avg td lg
11 Kayla Burrows Sr WR/LB 6 38 6.3 370 61.7 9.7 6 40
3 Breaza Robinson Jr WR/LB 6 29 4.8 219 36.5 7.6 2 24
7 Hayden Rupe Sr WR/CB 6 22 3.7 241 40.2 11.0 3 44
5 Kaitlyn Sigmundi Fr WR/S 6 16 2.7 111 18.5 6.9 1 41
14 Malia Domingo Sr RB/CB 3 11 3.7 38 12.7 3.5 0 8
12 Denise Garcia Sr C/CB 4 10 2.5 66 16.5 6.6 0 13
4 Emma Balacco Fr RB/CB 5 8 1.6 53 10.6 6.6 1 13
1 Jasmine Henry Fr RB/R 5 8 1.6 28 5.6 3.5 0 12
0 Brea Kamm So C/LB 5 6 1.2 26 5.2 4.3 0 10
22 Samantha Gonzalez Jr WR/CB 3 1 0.3 6 2.0 6.0 0 6
24 Cameron Laine Sr WR/S 6 1 0.2 8 1.3 8.0 0 8
18 Kailey Wine Fr C/LB 2 1 0.5 9 4.5 9.0 0 9
Totals:
gp:6, rec:151, rec/g:-, yds:1175, y/g:195.8, avg:7.8, td:13, lg:44
Opponents:
gp:6, rec:158, rec/g:-, yds:1378, y/g:229.7, avg:8.7, td:20, lg:48
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $wiki.su

Punting
# Name Yr Pos gp punt yds avg lg in20 fc tb blk
24 Cameron Laine Sr WR/S 6 14 415 29.6 42 6 0 0 0
0 Brea Kamm So C/LB 5 5 166 33.2 41 1 0 0 0
Totals:
gp:6, punt:19, yds:581, avg:30.6, lg:42, in20:7, fc:0, tb:0, blk:0
Opponents:
gp:6, punt:16, yds:428, avg:26.8, lg:43, in20:1, fc:0, tb:0, blk:0
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $wiki.su

All-Purpose
played in 75% of team games
# Name Yr Pos gp rush rcv pr kr yds ypg
11 Kayla Burrows Sr WR/LB 6 - 370 69 - 439 73.2
7 Hayden Rupe Sr WR/CB 6 1 241 - - 242 40.3
3 Breaza Robinson Jr WR/LB 6 - 219 20 - 239 39.8
5 Kaitlyn Sigmundi Fr WR/S 6 4 111 8 - 123 20.5
14 Malia Domingo Sr RB/CB 3 12 38 1 - 51 17.0
12 Denise Garcia Sr C/CB 4 - 66 - - 66 16.5
4 Emma Balacco Fr RB/CB 5 6 53 - - 59 11.8
1 Jasmine Henry Fr RB/R 5 2 28 - - 30 6.0
0 Brea Kamm So C/LB 5 - 26 - - 26 5.2
16 Samantha Wilson So QB 6 30 - - - 30 5.0
18 Kailey Wine Fr C/LB 2 - 9 - - 9 4.5
22 Samantha Gonzalez Jr WR/CB 3 - 6 - - 6 2.0
24 Cameron Laine Sr WR/S 6 - 8 - - 8 1.3
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $wiki.su

Scoring
# Name Yr Pos pts pts/g rush rec kr pr int fum xpm fgm 2pt misc
11 Kayla Burrows Sr WR/LB 44 7.3 - 6 - 1 0 - 0 - 1 0
7 Hayden Rupe Sr WR/CB 30 5.0 1 3 - - 1 - - - - 0
3 Breaza Robinson Jr WR/LB 12 2.0 - 2 - 0 0 - - - - 0
16 Samantha Wilson So QB 12 2.0 2 - - - - - 0 - 0 0
4 Emma Balacco Fr RB/CB 6 1.2 0 1 - - - - - - - 0
1 Jasmine Henry Fr RB/R 6 1.2 0 0 - - 1 - - - - 0
5 Kaitlyn Sigmundi Fr WR/S 6 1.0 0 1 - 0 0 - - - - 0
13 Ciara Zino Fr QB/S 6 1.2 1 - - - - - - - - 0
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $wiki.su

Defense
# Name Yr Pos gp tkl ast tot tkl/g sck yds tfl yds ff fr yds int yds brup blk
3 Breaza Robinson Jr WR/LB 6 45 0 45.0 7.5 - - 0.0 - - - - 1 9 3 -
11 Kayla Burrows Sr WR/LB 6 38 0 38.0 6.3 - - 1.0 2 - - - 2 22 3 -
4 Emma Balacco Fr RB/CB 5 16 0 16.0 3.2 - - 0.0 - - - - - - 1 -
1 Jasmine Henry Fr RB/R 5 15 0 15.0 3.0 2.0 7 0.0 - - - - 1 2 2 -
14 Malia Domingo Sr RB/CB 3 9 0 9.0 3.0 - - 0.0 - - - - - - - -
15 Jada Dillard Fr RB/R 6 8 0 8.0 1.3 3.0 15 0.0 - - - - - - - -
9 Zoe Melo Jr WR/S 3 6 0 6.0 2.0 - - 0.0 - - - - 1 19 - -
5 Kaitlyn Sigmundi Fr WR/S 6 6 0 6.0 1.0 - - 0.0 - - - - 2 21 3 -
22 Samantha Gonzalez Jr WR/CB 3 5 0 5.0 1.7 - - 0.0 - - - - - - - -
24 Cameron Laine Sr WR/S 6 5 0 5.0 .8 - - 0.0 - - - - 1 2 - -
7 Hayden Rupe Sr WR/CB 6 5 0 5.0 .8 - - 0.0 - - - - 1 63 1 -
13 Ciara Zino Fr QB/S 5 5 0 5.0 1.0 - - 0.0 - - - - - - 1 -
2 Nadia Arroyo Sr RB/R 3 4 0 4.0 1.3 - - 0.0 - - - - - - - -
10 Gabby Franzose Fr WR/LB 4 4 0 4.0 1.0 - - 0.0 - - - - - - 1 -
18 Kailey Wine Fr C/LB 2 1 0 1.0 .5 - - 0.0 - - - - - - - -
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $wiki.su

Passing
# Name Yr Pos gp comp att pct yds y/g y/a td int lg effic
16 Samantha Wilson So QB 6 144 206 69.9% 1197 199.5 5.8 11 3 44 133.4
13 Ciara Zino Fr QB/S 5 3 5 60.0% 24 4.8 4.8 0 1 10 60.3
10 Gabby Franzose Fr WR/LB 4 1 1 100.0% 11 2.8 11.0 0 0 11 192.4
12 Denise Garcia Sr C/CB 4 1 2 50.0% 11 2.8 5.5 0 0 0 96.2
5 Kaitlyn Sigmundi Fr WR/S 6 2 2 100.0% 8 1.3 4.0 2 0 5 463.6
Totals:
gp:6, comp:151, att:216, pct:69.9%, yds:1251, y/g:208.5, y/a:5.8, td:13, int:4, lg:44, effic:134.7
Opponents:
gp:6, comp:158, att:244, pct:64.8%, yds:1441, y/g:240.2, y/a:5.9, td:20, int:9, lg:48, effic:134.0
Rushing
# Name Yr Pos gp rush yds y/g avg td lg fum lost
16 Samantha Wilson So QB 6 18 30 5.0 1.7 2 14 - -
14 Malia Domingo Sr RB/CB 3 1 12 4.0 12.0 0 9 - -
4 Emma Balacco Fr RB/CB 5 2 6 1.2 3.0 0 6 - -
5 Kaitlyn Sigmundi Fr WR/S 6 1 4 0.7 4.0 0 4 - -
1 Jasmine Henry Fr RB/R 5 4 2 0.4 0.5 0 5 - -
7 Hayden Rupe Sr WR/CB 6 1 1 0.2 1.0 1 1 - -
13 Ciara Zino Fr QB/S 5 4 -3 -0.6 -0.8 1 2 - -
Totals:
gp:6, rush:31, yds:52, y/g:8.7, avg:1.7, td:4, lg:14, fum:0, lost:0
Opponents:
gp:6, rush:35, yds:138, y/g:23.0, avg:3.9, td:1, lg:57, fum:0, lost:0
Receiving
# Name Yr Pos gp rec rec/g yds y/g avg td lg
11 Kayla Burrows Sr WR/LB 6 38 6.3 370 61.7 9.7 6 40
3 Breaza Robinson Jr WR/LB 6 29 4.8 219 36.5 7.6 2 24
7 Hayden Rupe Sr WR/CB 6 22 3.7 241 40.2 11.0 3 44
5 Kaitlyn Sigmundi Fr WR/S 6 16 2.7 111 18.5 6.9 1 41
14 Malia Domingo Sr RB/CB 3 11 3.7 38 12.7 3.5 0 8
12 Denise Garcia Sr C/CB 4 10 2.5 66 16.5 6.6 0 13
4 Emma Balacco Fr RB/CB 5 8 1.6 53 10.6 6.6 1 13
1 Jasmine Henry Fr RB/R 5 8 1.6 28 5.6 3.5 0 12
0 Brea Kamm So C/LB 5 6 1.2 26 5.2 4.3 0 10
22 Samantha Gonzalez Jr WR/CB 3 1 0.3 6 2.0 6.0 0 6
24 Cameron Laine Sr WR/S 6 1 0.2 8 1.3 8.0 0 8
18 Kailey Wine Fr C/LB 2 1 0.5 9 4.5 9.0 0 9
Totals:
gp:6, rec:151, rec/g:-, yds:1175, y/g:195.8, avg:7.8, td:13, lg:44
Opponents:
gp:6, rec:158, rec/g:-, yds:1378, y/g:229.7, avg:8.7, td:20, lg:48
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $wiki.su

Punting
# Name Yr Pos gp punt yds avg lg in20 fc tb blk
24 Cameron Laine Sr WR/S 6 14 415 29.6 42 6 0 0 0
0 Brea Kamm So C/LB 5 5 166 33.2 41 1 0 0 0
Totals:
gp:6, punt:19, yds:581, avg:30.6, lg:42, in20:7, fc:0, tb:0, blk:0
Opponents:
gp:6, punt:16, yds:428, avg:26.8, lg:43, in20:1, fc:0, tb:0, blk:0
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 294, 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:     #if ($isIncluded)
212:         ## lineup pages
213:         #set ($searching = "false")
214:         #set ($paging = "false")
215:         #set ($info = "false")
216:     #else
217:         ## player stats (conference, naia)
218:         #set ($searching = "true")
219:         #set ($paging = "true")
220:         #set ($info = "true")
221:     #end
222: 
223:     
224:     ## FAISAL CHANGES
225:     $!request.setAttribute("pageObj", $page)
226:     $website.includeAgain("get-conf-pages?pageName=teams")
227:     #set ($confPages = $!request.getAttribute("conf_pages"))
228:     #set ($confTeams = {})
229:     
230:     ## THIS BUILDS A MAPPING OF CONFERENCE NAMES AND THEIR ASSOCIATED TEAMS FROM THE TEAMS PAGE
231:     #foreach ($conf in $confPages)
232:         #set ($ignore = $confTeams.put("$conf.name", { "teamsPage": $conf.pageObj, "teams": $conf.pageObj.teams }))
233:     #end
234: 
235: <div class="stats-container table-responsive-via-datatables">
236:     <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-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/table-sort-bs.js">
237:         #if ($minimum.length() > 0)
238:             <caption class="caption-side-top">$!minimum</caption>
239:         #end
240:         <thead class="thead-dark">
241:         <tr>
242:             #if ($isIncluded)
243:                 #printTableHeader("#", "text-center w-1")
244:             #elseif ($sort != 'name' && ! $isSharedMeets)
245:                 #printTableHeader("Rk", "text-center w-1")
246:             #end
247: 
248:             #if ($cansort == 'n' || $isSharedMeets)
249:                 #printTableHeader("Name", "text-left")
250:             #else
251:                 <th class="text-left text-uppercase text-nowrap">Name</th>
252:             #end
253: 
254:             #if ($isIncluded)
255:                 #printTableHeader("Yr", "text-center")
256:                 #printTableHeader("Pos", "text-center")
257:             #elseif ($isSharedMeets)
258:                 #printTableHeader("Yr", "text-center")
259:             #else
260:                 #printTableHeader("Team", "text-center")
261:             #end
262: 
263:             ## Hack for now
264:             #set ($pos = "")
265:             #set ($pos = $formatter.escapeXml($request.getParameter("pos")))
266:             #set ($labels = $labels.get($pos))
267: 
268:             #foreach ($key in $briefs.keySet())
269:                 #if ($cansort == 'n')
270:                     #printTableHeader($briefs.get($key), "text-center")
271:                 #else
272:                     <th class="text-center text-uppercase text-nowrap" #if($sort == $key) data-sort="1" #end data-key="$key">
273:                         <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>
274:                     </th>
275:                 #end
276:             #end
277:         </tr>
278:         </thead>
279:         #set ($showCount = 0)
280:         #set ($rankValue = "abb")
281:         #set ($counter = 0)
282: 
283:         <tbody>
284:             #foreach ($individual in $individuals)
285:                 #if ($r == "1")
286:                     #set ($stats = $individual.statsConference)
287:                 #else
288:                     #set ($stats = $individual.stats)
289:                 #end
290: 
291:                 #set ($individualPosition = "")
292:                 #set ($individualPosition = $individual.position)
293:                 #set ($posVec = $individualPosition.split("/"))
294:                 #set ($individualPosition = $posVec[0])
295: 
296:                 #set ($show = "")
297: 
298:                 #set ($showAllPlayers = $options.get("stats_show_all_players"))
299:                 #set ($showPosition = $lineupShowPosition && $lineupShowPosition.containsKey($p))
300:                 #set ($showStat = $lineupShowStat && $lineupShowStat.containsKey($p))
301:                 #if (!$showAllPlayers.equalsIgnoreCase("yes") and ($showPosition or $showStat or $min))
302:                     #if ($showPosition)
303:                         #set ($indPositionsList = $lineupShowPosition.get($p))
304:                         #foreach ($indPos in $indPositionsList)
305:                             #if ($individualPosition.equalsIgnoreCase($indPos))
306:                                 #set ($show = "y")
307:                             #end
308:                         #end
309:                     #end
310: 
311:                     #if ($showStat)
312:                         #set ($statsList = $lineupShowStat.get($p))
313:                         #foreach ($statElem in $statsList)
314:                             #if ($stats.get($statElem) > 0)
315:                                 #set ($show = "y")
316:                             #end
317:                         #end
318:                     #end
319: 
320:                     #if ($min)
321:                         #set ($test = 0)
322:                         #set ($test = $stats.get($min))
323:                         #if ($test > 0)
324:                             #set ($show = "y")
325:                         #end
326:                     #end
327:                 #else
328:                     #set ($show = "y")
329:                 #end
330: 
331:                 #if ($show.length() > 0)
332:                     #set ($showCount = $showCount + 1)
333:                     #if ($showCount <= 200)
334:                     <tr>
335:                         #if ($isIncluded)
336:                             <td class="text-nowrap text-center">${individual.uniform}</td>
337:                         #elseif ($sort != 'name' && ! $isSharedMeets)
338:                             <td class="text-nowrap text-center">
339:                                 ## Need to figure out what value is
340:                                 #set ($value = ${stats.get($sort)})
341:                                 #if (!($value == $rankValue))
342:                                 ##This is a new rank value... let's update our ranking
343:                                 #set ($rank = $showCount)
344:                                 #set ($rankValue = $value)
345:                             #end
346:                                 ${rank}
347:                             </td>
348:                         #end
349: 
350:                         <td class="text-nowrap text-left">
351:                             #if ($isSharedMeets)
352:                                 ${individual.firstName} ${individual.lastName}
353:                             #else
354:                                 <a href="${page.url}/${individual.pageName}">
355:                                     #if ($isIncluded)
356:                                         ${individual.firstName}
357:                                     #elseif ($individual.firstName.length() > 0)
358:                                         ${individual.firstName.substring(0, 1)}
359:                                     #end
360:                                     ${individual.lastName}
361:                                 </a>
362:                             #end
363:                         </td>
364: 
365:                         #if ($isIncluded)
366:                             <td class="text-nowrap text-center">$!{individual.year}</td>
367:                             <td class="text-nowrap text-center">
368:                                 #if ($individual.positionAbbreviation)
369:                                     $!individual.positionAbbreviation
370:                                 #else
371:                                     $!individual.position
372:                                 #end
373:                             </td>
374:                         #elseif ($isSharedMeets)
375:                             <td class="text-nowrap text-center">$!{individual.year}</td>
376:                         #else
377:                             #set ($teamname = "")
378:                             #set ($teamname = $individual.team)
379:                             
380:                             
381:                             #set ($teamURL = "teams?id=${individual.teamId}")
382:                             #foreach ($entry in $confTeams.entrySet())
383:                                 #if ($entry.value.teams.containsValue($teamname))
384:                                     #set ($teamURL = "${entry.value.teamsPage.url}?id=${individual.teamId}")
385:                                 #end
386:                             #end
387:                             
388: 
389:                             #if($teamAbbr.size() > 0)
390:                                 ## THIS IS USED ONLY FOR SITES WANTING TO DISPLAY DIVISONS WITHIN THERE STATS
391:                                 #*
392:                                 #set ($teamname = $teamAbbr.get($individual.teamId))
393:                                 #set ($teamname = $teamAbbr.get($individual.team))
394:                                  *#
395:                             #end
396: 
397:                             <td class="text-nowrap text-center" data-team-conf="$teamsPage.url">
398:                                 #if ($teamname.length() > 0)
399:                                     ##<a href="teams?id=$!{individual.teamId}">${teamname}</a>
400:                                     <a href="$teamURL">${teamname}</a>
401:                                 #end
402:                             </td>
403:                         #end
404: 
405:                         ## Briefs
406:                         #foreach ($key in $briefs.keySet())
407:                             #set ($value = "-")
408:                             #set ($value = $formatter.formatNumber(${stats.get($key)}, $!formats.get($key)))
409:                             <td class="text-center text-nowrap #if($sort == $key) table-active #end" data-sort="$sort" data-key="$key">
410:                                 #if ($value.length() > 0)
411:                                     $value
412:                                 #else
413:                                     -
414:                                 #end
415:                             </td>
416:                         #end
417:                     </tr>
418:                     #end ## page limit
419:                 #end ## showing
420:             #end ## foreach individual
421:         </tbody>
422:         #if ($individuals.size() == 0)
423:             <caption>
424:                 #if ($isSharedMeets)
425:                     This team's roster is empty
426:                 #elseif ($hasBiosBeforeFilter)
427:                     No players meet the minimum
428:                 #else
429:                     No stats are available at this time
430:                 #end
431:             </caption>
432:         #end
433:     </table>
434: </div>
435:     #if ($isIncluded || $showTotalRow)
436:     <div class="table-totals mb-3 small text-start text-muted p-2">
437:         <div class="d-flex align-items-start justify-content-start totals gap-2 mb-2">
438:             <div class="heading">Totals:</div>
439:             #set ($teamStats = $request.getAttribute("teamStats"))
440:             <div class="calculated-totals m-0">
441:                 #foreach ($key in $briefs.keySet())
442:                     #set ($value = "-")
443:                     #set ($value = $formatter.formatNumber(${teamStats.get($key)}, $!formats.get($key)))
444:                     <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
445:                 #end
446:             </div>
447:         </div>
448:         <div class="d-flex align-items-start justify-content-start opponent-totals gap-2 mb-2">
449:             <div class="heading">Opponents:</div>
450:             <div class="calculated-totals m-0">
451:                 #foreach ($key in $briefs.keySet())
452:                     #set ($keyopp = "${key}opp")
453:                     #set ($value = "-")
454:                     #set ($value = $formatter.formatNumber(${teamStats.get($keyopp)}, $!formats.get($key)))
455:                     <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
456:                 #end
457:             </div>
458:         </div>
459:     </div>
460:     #end
461: #end ## printPlayers
462: 
463: #macro (printFilters)
464:     <div class="py-3 border-top border-bottom my-3 d-print-none">
465:         <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">
466:             ## #printTeamsFilter
467:             <div class="flex-fill">
468:                 <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
469:                     $!request.setAttribute("pageObj", $page)
470:                     $website.include("conf-season-filter-template")
471:                 </div>
472:             </div>
473:             <div class="" role="group" aria-label="Print friendly version">
474:                 <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
475:             </div>
476:         </div>
477:     </div>
478: #end ## printFilters
479: 
480: ### END MACROS ###
481: 
482: ## TEAMS LAYOUTS FOR SHARED MEETS
483: #if ($isSharedMeets && !$isSingleTeam)
484: 
485:     #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value"))
486:     #set ($teamsThreshold = 20)
487: 
488:     #if ($page.title.length() > 0)
489:     <h1>$page.title</h1>
490:     #else
491:     <h1>Teams</h1>
492:     #end
493: 
494:     #if ($teams.size() > $teamsThreshold)
495: 
496:         #set ($alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
497: 
498:     <div class="alphabet-filter" data-module="stats/alphabet-filter">
499:         <div class="alphabet-filter-chars">
500:             <span class="alphabet-filter-border"> | </span>
501:             #foreach ($alphabet in $alphabets.split(""))
502:                 #if ($alphabet.length() > 0)
503:                     <a href="#alphabet-filter-${alphabet}" class="alphabet-filter-char">$alphabet</a>
504:                     <span class="alphabet-filter-border"> | </span>
505:                 #end
506:             #end
507:         </div> ## alphabet-filter-char
508: 
509:     <div class="alphabet-filter-list">
510:     <div class="alphabet-filter-column">
511:         #set ($lastAlphabet = "")
512:         #set ($counter = 0)
513: 
514:         #foreach ($team in $teams)
515:             #set ($teamName = $team.value)
516: 
517:             #if ($teamName.charAt(0) != $lastAlphabet)
518:                 #set ($counter = $counter + 1)
519:                 #if ($counter > 1)
520:                 </div> ## alphabet-filter-section
521:                 #end
522:                 #if ($counter == 8 || $counter == 15)
523:                 </div> ## alphabet-filter-column
524:                 <div class="alphabet-filter-column">
525:                 #end
526:                 #set ($lastAlphabet = $teamName.charAt(0))
527:             <div class="alphabet-filter-section" id="alphabet-filter-${lastAlphabet}">
528:                 <h4 class="alphabet-filter-char-title">| $lastAlphabet |</h4>
529:             #end
530:             <a href="${page.url}?teamId=${team.key}" class="alphabet-filter-link">$teamName</a>
531:         #end
532:     </div> ## alphabet-filter-section
533:     </div> ## alphabet-filter-column
534:     </div> ## alphabet-filter-list
535:     </div> ## alphabet-filter
536: 
537:     #else ## plain list
538: 
539:     <div class="stats-container table-responsive">
540:         <table class="table table-hover">
541:             #foreach ($team in $teams)
542:                 <tr><td class="text"><a href="${page.url}?teamId=${team.key}">$team.value</a></td></tr>
543:             #end
544:             #if ($teams.size() == 0)
545:                 <tr><td>There are no teams that match this criteria</td></tr>
546:             #end
547:         </table>
548:     </div>
549: 
550:     #end ## teams threshold
551: 
552:     ## TEAMINFO ROSTER LAYOUT
553: #elseif ($isIncluded && $view == 'roster')
554: 
555:     #set ($baseball = $sport && $sport.XMLCode == "bsgame")
556: <div class="stats-container table-responsive">
557:     <table class="table table-hover">
558:         <thead class="thead-dark">
559:         <tr>
560:             <th scope="col" class="text-nowrap text-center w-1">#</th>
561:             <th scope="col" class="text-nowrap text-left text-start text-uppercase pinned-col">Name</th>
562:             <th scope="col" class="text-nowrap text-center text-uppercase ">Position</th>
563:             <th scope="col" class="text-nowrap text-center text-uppercase">Year</th>
564:             <th scope="col" class="text-nowrap text-center text-uppercase">Status</th>
565:             #if ($baseball)
566:                 <th scope="col" class="text-nowrap text-center text-uppercase">Height</th>
567:                 <th scope="col" class="text-nowrap text-center text-uppercase">Weight</th>
568:                 <th scope="col" class="text-nowrap text-center text-uppercase">Bats</th>
569:                 <th scope="col" class="text-nowrap text-center text-uppercase">Throws</th>
570:                 <th scope="col" class="text-nowrap text-center text-uppercase">DOB</th>
571:                 <th scope="col" class="text-nowrap text-left text-uppercase">Hometown</th>
572:             #end
573:         </tr>
574:         </thead>
575:         <tbody>
576:             #foreach ($individual in $individuals)
577:             <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>
578:                 <td scope="row" class="text text-center">${individual.uniform}</td>
579:                 <td class="text text-left text-start pinned-col">
580:                     <a href="${page.url}/${individual.pageName}">${individual.firstName} ${individual.lastName}</a>
581:                 </td>
582:                 <td class="text-center">
583:                     #if ($individual.positionAbbreviation)
584:                 $!individual.positionAbbreviation
585:               #else
586:                         $!individual.position
587:                     #end
588:                 </td>
589:                 <td class="text-center">$!{individual.year}</td>
590:                 <td class="text-center">
591:                     #if($additionalRosterStatus)
592:                         $individual.playerStatus
593:                     #elseif ($individual.active)
594:                         Active
595:                     #else
596:                         Inactive
597:                     #end
598:                 </td>
599:                 #if ($baseball)
600:                     <td class="text-center">$!{individual.dataMap["height"]}</td>
601:                     <td class="text-center">$!{individual.dataMap["weight"]}</td>
602:                     <td class="text-center">$!{individual.dataMap["bats"]}</td>
603:                     <td class="text-center">$!{individual.dataMap["throws"]}</td>
604:                     <td class="text-center">$!{individual.dataMap["born"]}</td>
605:                     <td class="text-left text-start">$!{individual.dataMap["hometown"]}</td>
606:                 #end
607:             </tr>
608:             #end
609:         </tbody>
610:     </table>
611: </div>
612: 
613:     ## SHARED MEETS PLAYERS
614: #elseif ($isSharedMeets)
615: 
616:     #if ($teamId)
617:         #set ($playersPageTitle = $page.title)
618:         #foreach($team in $page.teams.entrySet())
619:             #if ($teamId == $team.key)
620:                 #set ($playersPageTitle = $team.value)
621:             #end
622:         #end
623:     <h1>$playersPageTitle</h1>
624:     #end
625: 
626:     #printPlayers($pos, $restriction)
627: 
628:     ## PLAYERS / LINEUP
629: #else
630: 
631:     ## do not show these options on the lineup page
632:     #if (not $isIncluded)
633: 
634:         #if ($isAjax)
635:             $website.decorate('')
636:             #printPlayers($pos $restriction)
637:         #stop
638:         #end
639: 
640:         ## ARCHIVES
641:         #if ($page.contentType == "stat/bios")
642:         <div class="float-end">$website.include("navbar-playerstats-archive?tmpl=schedule-archive-list-template")</div>
643:         #end
644: 
645:         #if ($page.title.length() > 0 && !$isSharedMeets)
646:         <h1>$page.title</h1>
647:         #else
648:         <h1>Player Stats</h1>
649:         #end
650: 
651:         #printFilters
652: 
653:         ##if ($minimum.length() > 0)
654:     <!--<div class="clearfix align-right">$!minimum</div>-->
655:         ##end
656: 
657:         #if ($showconf && !$isSharedMeets)
658:             $request.setAttribute("icl-responsive-tabs-script", true)
659:             <div class="tab-container">
660:                 <div class="tab-nav m-0">
661:                     <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">
662:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
663:                             <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>
664:                         </li>
665:                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666:                             <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>
667:                         </li>
668:                     </ul>
669:                 </div>
670: 
671:                 <div class="tab-content p-3 border">
672:                     <div class="tab-pane #if ($restriction.equals("0")) active #end" role="tabpanel" id="overall">
673:                         #printBriefsCategories("0")
674:                     </div>
675:                     <div class="tab-pane #if ($restriction.equals("1")) active #end" role="tabpanel" id="conf">
676:                         #printBriefsCategories("1")
677:                     </div>
678:                 </div>
679:             </div> ## tab-container overall/conf
680:         #else
681:             #printBriefsCategories($restriction)
682:         #end
683: 
684:     #else
685:         #printBriefsCategories($restriction)
686:     #end ## not isIncluded
687: #end ## LAYOUTS
688: 
689: $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 at Florida Memorial W, 20-7 204 201 22-33 67% 3 5 0.6 2 - 30.0 2 0 0:00
Feb 23 Keiser L, 20-18 215 201 25-35 71% 14 2 7.0 1 - 30.0 1 0 0:00
Feb 25 St. Thomas W, 37-14 261 250 32-40 80% 11 9 1.2 3 - 25.0 1 0 0:00
Mar 4 at Warner L, 31-18 258 240 23-34 68% 18 6 3.0 - - 32.0 1 0 0:00
Mar 14 at Campbellsville W, 27-0 - - - - - - - - - - - - -
Mar 14 vs. Cottey (MO) W, 41-0 - - - - - - - - - - - - -
Mar 15 Reinhardt W, 34-7 - - - - - - - - - - - - -
Mar 18 Fort Lauderdale W, 38-6 - - - - - - - - - - - - -
Mar 24 Thomas L, 33-6 - - - - - - - - - - - - -
Mar 29 Florida Memorial W, 12-7 - - - - - - - - - - - - -
Mar 30 at St. Thomas L, 25-14 217 216 30-42 71% 1 7 0.1 2 - 27.0 - 0 0:00
Mar 30 at St. Thomas L, 25-14 - - - - - - - - - - - - -
Apr 4 Campbellsville W, 33-0 - - - - - - - - - - - - -
Apr 6 at Thomas L, 19-6 - - - - - - - - - - - - -
Apr 19 at Keiser L, 39-19 148 143 19-32 59% 5 2 2.5 1 - 28.0 - 34 24:10
Apr 22 Warner W, 27-13 - - - - - - - - - - - - -
Apr 28 at Thomas L, 33-14 - - - - - - - - - - - - -
May 19 vs. Midland W, 20-14 - - - - - - - - - - - - -
gp td fg xpt 2pc dxp saf pts ppg
Total 6 20 - - 1 - - 126 21.0
Conference 6 20 - - 1 - - 126 21.0
Exhibition - - - - - - - - -
 
Home 2 9 - - - - - 55 27.5
Away 4 11 - - 1 - - 71 17.8
Neutral - - - - - - - - -
 
Wins 2 9 - - - - - 57 28.5
Losses 4 11 - - 1 - - 69 17.3
 
February 3 12 - - - - - 75 25.0
March 2 5 - - - - - 32 16.0
April 1 3 - - 1 - - 19 19.0
gp ppg pts yd/g pass y/g rush y/g tkl/g int fum rec sack td
Total 6 22.7 136 263.2 240.2 23.0 28.7 9 0 5 2
Conference 6 22.7 136 263.2 240.2 23.0 28.7 9 0 5 2
Exhibition - - - - - - - - - - -
 
Home 2 17.0 34 273.5 255.5 18.0 27.5 4 0 2 1
Away 4 25.5 102 258.0 232.5 25.5 29.3 5 0 3 1
Neutral - - - - - - - - - - -
 
Wins 2 10.5 21 205.0 191.0 14.0 27.5 5 0 3 0
Losses 4 28.8 115 292.3 264.8 27.5 29.3 4 0 2 2
 
February 3 13.7 41 233.3 218.7 14.7 28.3 6 0 4 1
March 2 28.0 56 289.5 246.5 43.0 29.5 2 0 1 0
April 1 39.0 39 300.0 292.0 8.0 28.0 1 0 - 1
Date Opponent Score Attend
Feb 18 at Florida Memorial W, 20-7 65
Feb 23 Keiser L, 20-18 85
Feb 25 St. Thomas W, 37-14 55
Mar 4 at Warner L, 31-18 85
Mar 14 at Campbellsville 27-0 Win -
Mar 14 vs. Cottey (MO) 41-0 Win -
Mar 15 Reinhardt 34-7 Win -
Mar 18 Fort Lauderdale 38-6 Win -
Mar 24 Thomas 6-33 Loss -
Mar 29 Florida Memorial 12-7 Win -
Mar 30 at St. Thomas L, 25-14 45
Mar 30 at St. Thomas 14-25 Loss -
Apr 4 Campbellsville 33-0 Win -
Apr 6 at Thomas 6-19 Loss -
Apr 19 at Keiser L, 39-19 57
Apr 22 Warner 27-13 Win -
Apr 28 at Thomas 14-33 Loss -
May 19 vs. Midland 20-14 Win -