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

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

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

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

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

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

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

All-Purpose
Scoring
Defense
Download roster: FRO (First Last) | FRO (Last, First) FRX (First Last) | FRX (Last, First)
Date Opponent Score yds pass c-a comp % rush r y/r int fum tack sac pen yds top
Feb 18 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 -