Individual Leaders

Yards per game GP YPG
2 192.5
2 162.5
1 147.0
1 105.0
View All
Touchdowns GP PTD
2 2
2 1
1 1
View All
Yards per game GP RYG
2 78.0
2 52.5
2 47.0
1 43.0
2 37.0
View All
Touchdowns GP RTD
2 2
UBC
There was a problem with a Velocity script
Pagesports/fball/2022-23p/stats-leader-template
ErrorInvocation of method 'substring' in class java.lang.String threw exception java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at m1fhuptcpyc9aq45sports/fball/2022-23p/stats-leader-template[line 269, column 128]
Page source:
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4: 
5: #* BEGIN TABLE STYLE OPTIONS ***************#
6: #set($tableClass 	= "")
7: #set($tableHeadClass 	= "thead-dark")
8: #if ($options.get("table_bordered") != "false")	#set($tableClass = "$tableClass table-bordered") #end
9: #if ($options.get("table_hover") != "false")		#set($tableClass = "$tableClass table-hover") #end
10: #if ($options.get("table_head_dark") == "true" || $request.getParameter("thead") == "dark")	#set($tableHeadClass = "$tableHeadClass thead-dark") #end
11: #if ($options.get("table_head_dark") == "false" || $request.getParameter("thead") == "light")	#set($tableHeadClass = "$tableHeadClass thead-light") #end
12: #* END TABLE STYLES OPTIONS ****************#
13: 
14: #set ($locale = "en_us")
15: #set ($locale = $options.get("locale"))
16: #set ($jsRenderingParam = "jsRendering=true")
17: 
18: $website.include("standings?tmpl=stats-standings-abbr-template&${jsRenderingParam}")
19: #set ($teamAbbr = $request.getAttribute("teamAbbr"))
20: 
21: #set ($rosterHeadshots = [])
22: $website.include("${page.sectionPage.url}/roster?tmpl=roster-headshots-template&excludeBlank=true&${jsRenderingParam}")
23: #set ($rosterHeadshots = $!request.getAttribute("roster_headshots"))
24: 
25: #set ($lastIndex = $page.url.lastIndexOf("/"))
26: #set ($seasonPath = $page.url.substring(0, $lastIndex))
27: #set ($playersUrl = "${seasonPath}/players")
28: #set ($teamsUrl = "${seasonPath}/teams")
29: 
30: #set ($dropdownsWrapperClass = "dropdowns d-flex justify-content-center align-items-center flex-wrap gap-3 p-3 border-top")
31: 
32: #**********************************
33: ****** Configurations - Keys ******
34: **********************************#
35: 
36: #set ($footballPassingConfig = [
37:     {"key": "pyg", "pos": "qb", "statName": "passing - yards per game", "th": "YPG"},
38:     {"key": "ptd", "pos": "qb", "statName": "passing - touchdowns", "th": "PTD"}
39: ])
40: 
41: #set ($footballRushingConfig = [
42:     {"key": "ryg", "pos": "rb", "statName": "rushing - yards per game", "th": "RYG"},
43:     {"key": "rtd", "pos": "rb", "statName": "rushing - touchdowns", "th": "RTD"}
44: ])
45: 
46: #set ($footballReceivingConfig = [
47:     {"key": "wyg", "pos": "wr", "statName": "receiving - yards per game", "th": "WYG"},
48:     {"key": "wtd", "pos": "wr", "statName": "receiving - touchdowns", "th": "WTD"}
49: ])
50: 
51: #set ($footballDefenceConfig = [
52:     {"key": "dtpg", "pos": "d", "statName": "defense - tackles per game", "th": "DTPG"},
53:     {"key": "dst", "pos": "d", "statName": "defense - sacks", "th": "DST"}
54: ])
55: 
56: #set ($baseballHittingConfig = [
57:     {"key": "avg", "pos": "h", "statName": "batting average", "th": "AVG"},
58:     {"key": "rbi", "pos": "h", "statName": "runs batted in", "th": "RBI"},
59:     {"key": "hr", "pos": "eb", "statName": "home runs", "th": "HR"},
60:     {"key": "sb", "pos": "br", "statName": "stolen bases", "th": "SB"}
61: ])
62: 
63: #set ($baseballPitchingConfig = [
64:     {"key": "era", "pos": "p", "statName": "earned run average", "th": "ERA"},
65:     {"key": "pw", "pos": "p", "statName": "wins", "th": "W"},
66:     {"key": "pk", "pos": "pe", "statName": "strikeouts", "th": "K"},
67:     {"key": "sv", "pos": "p", "statName": "saves", "th": "SV"}
68: ])
69: 
70: #set ($iceHockeyOffensiveConfig = [
71:     {"key": "p", "pos": "sk", "statName": "points", "th": "P"},
72:     {"key": "g", "pos": "sk", "statName": "goals", "th": "G"},
73:     {"key": "a", "pos": "sk", "statName": "assists", "th": "A"},
74:     {"key": "plusminus", "pos": "sk", "statName": "plusminus", "th": "+/-"}
75: ])
76: 
77: #set ($iceHockeyGoaltendingConfig = [
78:     {"key": "gaa", "pos": "g", "statName": "goals against average", "th": "GAA"},
79:     {"key": "svpt", "pos": "g", "statName": "save percentage", "th": "SV%"},
80:     {"key": "sv", "pos": "g", "statName": "saves", "th": "SV"},
81:     {"key": "gowpt", "pos": "g", "statName": "win percentage", "th": "WPT"}
82: ])
83: 
84: #set ($volleyballConfig = [
85:     {"key": "kps", "pos": "of", "statName": "kills per set", "th": "KPS"},
86:     {"key": "k", "pos": "of", "statName": "kills", "th": "K"},
87:     {"key": "hpt", "pos": "of", "statName": "hitting percentage", "th": "HPT"},
88:     {"key": "bps", "pos": "df", "statName": "blocks per set", "th": "BPS"},
89:     {"key": "dps", "pos": "df", "statName": "digs per set", "th": "DPS"},
90:     {"key": "d", "pos": "df", "statName": "digs", "th": "D"},
91:     {"key": "saps", "pos": "sr", "statName": "service aces per set", "th": "SAPS"},
92:     {"key": "aps", "pos": "of", "statName": "assists per set", "th": "APS"}
93: ])
94: 
95: #set ($basketballConfig = [
96:     {"key": "ptspg", "pos": "shg", "statName": "points per game", "th": "PTS"},
97:     {"key": "trebpg", "pos": "bcg", "statName": "rebounds per game", "th": "REB"},
98:     {"key": "fgpt", "pos": "sh", "statName": "field goal percentage", "th": "PCT"},
99:     {"key": "fgpt3", "pos": "sh", "statName": "3-point field goal percentage", "th": "PCT"}
100: ])
101: 
102: #set ($soccerOffensiveConfig = [
103:     {"key": "g", "pos": "sc", "statName": "goals", "th": "G"},
104:     {"key": "a", "pos": "sc", "statName": "assists", "th": "A"},
105:     {"key": "p", "pos": "sc", "statName": "points", "th": "P"},
106:     {"key": "sh", "pos": "sh", "statName": "shots", "th": "SH"}
107: ])
108: 
109: #set ($soccerGoalieConfig = [
110:     {"key": "sv", "pos": "g", "statName": "saves", "th": "SV"},
111:     {"key": "svpt", "pos": "g", "statName": "save percentage", "th": "SVPT"},
112:     {"key": "ga", "pos": "g", "statName": "goals against", "th": "GA"},
113:     {"key": "gaa", "pos": "gg", "statName": "goals against average", "th": "GAA"}
114: ])
115: 
116: #set ($fieldHockeyOffensiveConfig = [
117:     {"key": "g", "pos": "fielder", "statName": "goals", "th": "G"},
118:     {"key": "a", "pos": "fielder", "statName": "assists", "th": "A"},
119:     {"key": "p", "pos": "fielder", "statName": "points", "th": "P"},
120:     {"key": "sh", "pos": "fielder", "statName": "shots", "th": "SH"}
121: ])
122: 
123: #set ($fieldHockeyGoalieConfig = [
124:     {"key": "sv", "pos": "goalie", "statName": "saves", "th": "SV"},
125:     {"key": "svpt", "pos": "goalie", "statName": "save percentage", "th": "SVPT"},
126:     {"key": "ga", "pos": "goalie", "statName": "goals against", "th": "GA"},
127:     {"key": "gaa", "pos": "goalie", "statName": "goals against average", "th": "GAA"}
128: ])
129: 
130: #set ($lacrosseOffensiveConfig = [
131:     {"key": "g", "pos": "of", "statName": "goals", "th": "G"},
132:     {"key": "a", "pos": "of", "statName": "assists", "th": "A"},
133:     {"key": "p", "pos": "of", "statName": "points", "th": "P"},
134:     {"key": "sh", "pos": "of", "statName": "shots", "th": "SH"}
135: ])
136: 
137: #set ($lacrosseGoalieConfig = [
138:     {"key": "sv", "pos": "gk", "statName": "saves", "th": "SV"},
139:     {"key": "svpt", "pos": "gk", "statName": "save percentage", "th": "SVPT"},
140:     {"key": "ga", "pos": "gk", "statName": "goals against", "th": "GA"},
141:     {"key": "gaa", "pos": "gk", "statName": "goals against average", "th": "GAA"}
142: ])
143: 
144: #set ($waterPoloOffensiveConfig = [
145:     {"key": "g", "pos": "fp", "statName": "goals", "th": "G"},
146:     {"key": "a", "pos": "fp", "statName": "assists", "th": "A"},
147:     {"key": "stl", "pos": "fp", "statName": "steals", "th": "STL"},
148:     {"key": "sh", "pos": "fp", "statName": "shots", "th": "SH"}
149: ])
150: 
151: #set ($waterPoloGoalieConfig = [
152:     {"key": "sv", "pos": "g", "statName": "saves", "th": "SV"},
153:     {"key": "svpt", "pos": "g", "statName": "save percentage", "th": "SVPT"},
154:     {"key": "ga", "pos": "g", "statName": "goals against", "th": "GA"},
155:     {"key": "gow", "pos": "g", "statName": "wins", "th": "W"}
156: ])
157: 
158: #**********************************
159: ****** Configurations - Tabs ******
160: **********************************#
161: 
162: #set ($footballTabsConfig = {
163:     "tabs": [
164:         {"label": "Passing", "config": $footballPassingConfig},
165:         {"label": "Rushing", "config": $footballRushingConfig},
166:         {"label": "Receiving", "config": $footballReceivingConfig},
167:         {"label": "#if ($locale == 'en_us') Defense #elseif ($locale == 'en_gb') Defence #end", "config": $footballDefenceConfig}
168:     ]
169: })
170: 
171: #set ($baseballTabsConfig = {
172:     "tabs": [
173:         {"label": "Hitting", "config": $baseballHittingConfig},
174:         {"label": "Pitching", "config": $baseballPitchingConfig}
175:     ]
176: })
177: 
178: #set ($iceHockeyTabsConfig = {
179:     "tabs": [
180:         {"label": "Offensive Leaders", "config": $iceHockeyOffensiveConfig},
181:         {"label": "Goaltending Leaders", "config": $iceHockeyGoaltendingConfig}
182:     ]
183: })
184: 
185: #set ($soccerTabsConfig = {
186:     "tabs": [
187:         {"label": "Offensive Leaders", "config": $soccerOffensiveConfig},
188:         {"label": "Goalie Leaders", "config": $soccerGoalieConfig}
189:     ]
190: })
191: 
192: #set ($fieldHockeyTabsConfig = {
193:     "tabs": [
194:         {"label": "Offensive Leaders", "config": $fieldHockeyOffensiveConfig},
195:         {"label": "Goalie Leaders", "config": $fieldHockeyGoalieConfig}
196:     ]
197: })
198: 
199: #set ($lacrosseTabsConfig = {
200:     "tabs": [
201:         {"label": "Offensive Leaders", "config": $lacrosseOffensiveConfig},
202:         {"label": "Goalie Leaders", "config": $lacrosseGoalieConfig}
203:     ]
204: })
205: 
206: #set ($waterPoloTabsConfig = {
207:     "tabs": [
208:         {"label": "Offensive Leaders", "config": $waterPoloOffensiveConfig},
209:         {"label": "Goalie Leaders", "config": $waterPoloGoalieConfig}
210:     ]
211: })
212: 
213: #*******************
214: ****** MACROS ******
215: *******************#
216: 
217: #macro (printImage $src $alt $class)
218: 	<div class="ratio ratio-1x1 img-mh-3 img-mw-3 rounded-circle overflow-hidden img-thumbnail">
219: 		<img data-src="${src}" alt="${alt}" class="lazyload img-fluid h-auto ${class}" />
220: 	</div>
221: #end
222: 
223: #macro (leaders $leaders $key $pos $statName $th)
224: 	#set ($label = $labels.get($key))
225: 	#set ($atLeastOneStat = false)
226: 	<div class="table-responsive">
227: 	<table class="table ${tableClass} small align-middle w-100">
228:             <thead class="${tableHeadClass}">
229:                     <tr>
230:                         <th>${label}</th>
231:                         <th class="stat-val align-center text-uppercase" aria-label="games played">GP</th>
232:                         <th class="stat-val align-center text-uppercase table-active" aria-label="value">$th</th>
233:                     </tr>
234:             </thead>
235:                 <tbody>
236: 			#foreach ($leader in $leaders)
237: 				#if ($leader.key == $key)
238: 					#foreach ($player in $leader.value)
239:                         #if($player.stats.get($key) > 0)
240:                             <tr>
241:                                 <td>
242:                                     <div class="d-flex align-items-center gap-1">
243:                                         #if ($player.teamId.length() > 0)
244:                                             #set ($playerName = $player.firstName + ' '+  $player.lastName)
245:                                             #set ($src = "/info/images/default-headshot.png")
246:                                             #if ($rosterHeadshots.size() > 0)
247:                                                 #foreach ($rosterPlayer in $rosterHeadshots)
248:                                                     #if ($playerName == $rosterPlayer.name)
249:                                                         #if ($rosterPlayer.headshot.length() > 0)
250:                                                             #set ($src = $rosterPlayer.headshot)
251:                                                         #elseif ($website.exists("/images/setup/default-headshot.png"))
252:                                                             #set ($src = "/images/setup/default-headshot.png")
253:                                                         #elseif ($website.exists("/images/setup/headshot_default.jpg"))
254:                                                             #set ($src = "/images/setup/headshot_default.jpg")
255:                                                         #end
256:                                                     #end
257:                                                 #end
258:                                                 #set ($src = "${src}?max_width=48")
259:                                                 #printImage($src, $playerName, "start-50 translate-middle-x")
260:                                             #else
261:                                                 #printImage($website.teamLogo($player.teamId), $player.team, "top-50 start-50 translate-middle p-1")
262:                                             #end
263:                                         #end
264:                                         <div class="d-flex flex-column">
265:                                             #set ($playerUrl = "${playersUrl}?id=${player.playerId}")
266:                                             #if ($player.pageName.length() > 0)
267:                                                 #set ($playerUrl = "${playersUrl}/${player.pageName}")
268:                                             #end
269:                                             <a href="${playerUrl}" class="player-name text-decoration-none">${player.firstName.substring(0,1)} ${player.lastName}</a>
270:                                             #if ($player.teamId.length() > 0)
271:                                                 #set ($teamUrl = "${teamsUrl}?id=${player.teamId}")
272:                                                 #if ($player.teamPageName.length() > 0)
273:                                                     #set ($teamUrl = "${teamsUrl}/${player.teamPageName}")
274:                                                 #end
275:                                                 <a href="${teamUrl}" class="player-team fst-italic small text-decoration-none text-muted lh-1">$player.team</a>
276:                                             #else
277:                                                 <span class="player-team fst-italic small text-muted">$player.team</span>
278:                                             #end
279:                                         </div>
280:                                     </div>
281:                                 </td>
282:                                 #set ($atLeastOneStat = true)
283:                                 <td class="stat-gp align-center">$formatter.formatNumber(${player.stats.get('gp')}, $formats.get('gp'))</td>
284:                                 <td class="stat-val align-center table-active">$formatter.formatNumber(${player.stats.get($key)}, $formats.get($key))</td>
285:                             </tr>
286:                         #end
287: 					#end
288: 				#end ## players
289: 			#end ## leaders
290: 
291: 			#if (! $atLeastOneStat)
292: 				<tr><td colspan="3">Stats aren't available</td></tr>
293: 			#end 
294:                 </tbody>
295:                 <tfoot class="text-center">
296: 					<tr>
297: 						<td colspan="3" class="border-bottom-0 p-0">
298: 							<a class="btn btn-link d-block text-decoration-none btn-sm" href="${seasonPath}/players?pos=${pos}&sort=${key}&${jsRenderingParam}" aria-label="View all by ${statName}">View All</a>
299: 						</td>
300: 					</tr>
301:                 </tfoot>
302: 	</table>
303: 	</div>
304: #end ## macro leaders
305: 
306: #macro (generateLeaderSections $leaders $config $columnClass)
307:     #foreach ($section in $config)
308:         <div class="${columnClass}">
309:             #leaders($leaders, $section.key, $section.pos, $section.statName, $section.th)
310:         </div>
311:     #end
312: #end ## generateLeaderSections
313: 
314: #macro (generateTabs $tabConfig $columnClass)
315:     <div class="row">
316:         <div class="col-xs-12 col-sm-12">
317:             <div class="tab-container">
318:                 <ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-center gap-3" id="stats-leader-tabs" role="tablist">
319:                     #foreach ($tab in $tabConfig.tabs)
320:                         #set ($tabId = $tab.label.toLowerCase().replace(' ', '-'))
321:                         <li class="tabs-category nav-item text-center">
322:                             <a class="nav-link #if($foreach.index == 0)active#end" href="#" role="tab" data-bs-toggle="tab" data-bs-target="#${tabId}-pane" id="${tabId}-tab">${tab.label}</a>
323:                         </li>
324:                     #end
325:                 </ul>
326:                 <div class="tab-content pt-3">
327:                     #foreach ($tab in $tabConfig.tabs)
328:                         #set ($tabId = $tab.label.toLowerCase().replace(' ', '-'))
329:                         <div class="tab-pane #if($foreach.index == 0)active#end" id="${tabId}-pane">
330:                             <div class="row g-3">
331:                                 #generateLeaderSections($leaders, $tab.config, $columnClass)
332:                             </div>
333:                         </div>
334:                     #end
335:                 </div>
336:             </div> ## tab-container
337:         </div>
338:     </div>
339: #end ## generateTabs
340: 
341: #macro (generateDropdown $label $items)
342:     #set ($id = $label.toLowerCase().replaceAll('[^a-z0-9]', '-') + "-dropdown")
343:     <div class="dropdown">
344:         <button class="btn btn-secondary dropdown-toggle" type="button" id="${id}" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
345:             ${label}
346:         </button>
347:         <div class="dropdown-menu" aria-labelledby="${id}">
348:             #foreach ($item in $items)
349:                 <a class="dropdown-item" href="${seasonPath}${item.url}">${item.name}</a>
350:             #end
351:         </div>
352:     </div>
353: #end
354: 
355: #macro (printFilters)
356: <div class="my-3 d-print-none">
357:     <div class="btn-toolbar d-flex justify-content-between gap-3 flex-column flex-sm-row flex-sm-nowrap" role="toolbar" aria-label="Schedule tool bar">
358: 		## #printTeamsFilter
359:         <div class="flex-fill">
360:             <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
361: 				$!request.setAttribute("pageObj", $page)
362: 				$website.include("conf-season-filter-template")
363:             </div>
364:         </div>
365:         <div class="m-0" role="group" aria-label="Print friendly version">
366:             <a href="${page.url}?dec=printer-decorator" class="btn btn-link border text-decoration-none text-nowrap"><span class="fa fa-print"></span> Print</a>
367:         </div>
368:     </div>
369: </div>
370: #end ## printFilters
371: 
372: #********************
373: ****** CONTENT ******
374: ********************#
375: 
376: <div class="stats-leaders">
377: 	
378: #if ($page.title.length() > 0)
379: 	<h1>$page.title</h1>
380: #else
381: 	<h1>Individual Leaders</h1>
382: #end
383: 
384: ## ARCHIVES
385: #printFilters
386: 
387: <div class="stats-leaders-contents">
388: 
389: #if ($sport.enumCode == 0)
390: ## Football
391: 
392: #generateTabs($footballTabsConfig, 'col-12 col-md-6')
393: 
394: <div class="${dropdownsWrapperClass}">
395:     <!-- Sortable Team Stats Dropdown -->
396:     #generateDropdown('Sortable Team Stats', [
397:         {"url": "/teams?sort=ydpg&pos=yar&${jsRenderingParam}", "name": "Total Offense"},
398:         {"url": "/teams?sort=pypg&pos=pas&${jsRenderingParam}", "name": "Passing"},
399:         {"url": "/teams?pos=rus&sort=rypg&${jsRenderingParam}", "name": "Rushing"},
400:         {"url": "/teams", "name": "More Stats"}
401:     ])
402:     <!-- Player Stats by Team Dropdown -->
403: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
404: </div>
405: 
406: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11)
407: ## Baseball or Softball
408: 
409: #generateTabs($baseballTabsConfig, 'col-12 col-md-6 col-xl-3')
410: 
411: <div class="${dropdownsWrapperClass}">
412:     <!-- Sortable Team Stats Dropdown -->
413:     #generateDropdown('Sortable Team Stats', [
414:         {"url": "/teams?pos=br&sort=r&${jsRenderingParam}", "name": "Runs"},
415:         {"url": "/teams?pos=eb&sort=hr&${jsRenderingParam}", "name": "Home Runs"},
416:         {"url": "/teams?sort=avg&${jsRenderingParam}", "name": "Batting Average"},
417:         {"url": "/teams", "name": "More Stats"}
418:     ])
419:     <!-- Player Stats by Team Dropdown -->
420: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
421: </div>
422: 
423: #elseif ($sport.enumCode == 5)
424: ## Ice Hockey
425: 
426: #generateTabs($iceHockeyTabsConfig, 'col-12 col-md-6 col-xl-3')
427: 
428: <div class="${dropdownsWrapperClass}">
429:     <!-- Offensive Leaders -->
430:     #generateDropdown('Offensive Leaders', [
431:         {"url": "/players?sort=sh&${jsRenderingParam}", "name": "Shots on Goal"},
432:         {"url": "/players?sort=ppg&${jsRenderingParam}", "name": "Power Play Goals"},
433:         {"url": "/players", "name": "More Stats"}
434:     ])
435:     <!-- Goaltending Leaders -->
436:     #generateDropdown('Goaltending Leaders', [
437:         {"url": "/players?pos=g&sort=ga&${jsRenderingParam}", "name": "Goals Allowed"},
438:         {"url": "/players?pos=g&sort=sv&${jsRenderingParam}", "name": "Saves"},
439:         {"url": "/players", "name": "More Stats"}
440:     ])
441:     <!-- Sortable Team Stats -->
442:     #generateDropdown('Sortable Team Stats', [
443:         {"url": "/teams?sort=g&${jsRenderingParam}", "name": "Goals"},
444:         {"url": "/teams?sort=pim&${jsRenderingParam}", "name": "PIM"},
445:         {"url": "/teams", "name": "More Stats"}
446:     ])
447: 	<!-- Player Stats by Team Dropdown -->
448: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
449: </div>
450: 	
451: #elseif ($sport.enumCode == 4)
452: ## Volleyball
453: 
454: <div class="row g-3">
455:     #generateLeaderSections($leaders, $volleyballConfig, 'col-12 col-md-6 col-xl-3')
456: </div>
457: 
458: <div class="${dropdownsWrapperClass}">
459:     <!-- Sortable Team Stats -->
460:     #generateDropdown('Sortable Team Stats', [
461:         {"url": "/teams?sort=hpt&${jsRenderingParam}", "name": "Hitting Percentage"},
462:         {"url": "/teams?sort=a&${jsRenderingParam}", "name": "Assists"},
463:         {"url": "/teams?sort=k&${jsRenderingParam}", "name": "Kills"},
464:         {"url": "/teams?pos=df&sort=bt&${jsRenderingParam}", "name": "Blocks (tot)"},
465:         {"url": "/teams?pos=sr&sort=sa&${jsRenderingParam}", "name": "Service Aces"},
466:         {"url": "/teams?pos=df&sort=d&${jsRenderingParam}", "name": "Digs"},
467:         {"url": "/teams", "name": "More Stats"}
468:     ])
469:     <!-- Player Stats by Team Dropdown -->
470: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
471: </div>
472: 
473: #elseif ($sport.enumCode == 2)
474: ## Basketball
475: 
476: <div class="row g-3">
477: 	#generateLeaderSections($leaders, $basketballConfig, 'col-12 col-md-6 col-xl-3')
478: </div>
479: 
480: <div class="${dropdownsWrapperClass}">
481:     <!-- Scoring -->
482:     #generateDropdown('Scoring', [
483:         {"url": "/players?pos=shg&sort=ptspg&${jsRenderingParam}", "name": "Points"},
484:         {"url": "/players?pos=sh&sort=fgpt&${jsRenderingParam}", "name": "FG Pt"},
485:         {"url": "/players?pos=sh&sort=ftpt&${jsRenderingParam}", "name": "FT Pt"},
486:         {"url": "/players", "name": "More Stats"}
487:     ])
488:     <!-- Rebounds -->
489:     #generateDropdown('Rebounds', [
490:         {"url": "/players?pos=bcg&sort=orebpg&${jsRenderingParam}", "name": "Off Rebounds"},
491:         {"url": "/players?pos=bcg&sort=drebpg&${jsRenderingParam}", "name": "Def Rebounds"},
492:         {"url": "/players?pos=bcg&sort=trebpg&${jsRenderingParam}", "name": "Total Rebounds"},
493:         {"url": "/players", "name": "More Stats"}
494:     ])
495:     <!-- Defense -->
496:     #generateDropdown("#if ($locale == 'en_us') Defense #elseif ($locale == 'en_gb') Defence #end", [
497:         {"url": "/players?pos=bcg&sort=blkpg&${jsRenderingParam}", "name": "Blocks"},
498:         {"url": "/players?pos=bcg&sort=stlpg&${jsRenderingParam}", "name": "Steals"},
499:         {"url": "/players", "name": "More Stats"}
500:     ])
501:     <!-- Assists/TO -->
502:     #generateDropdown('Assists/TO', [
503:         {"url": "/players?pos=bcg&sort=astpg&${jsRenderingParam}", "name": "Assists"},
504:         {"url": "/players?pos=bcg&sort=topg&${jsRenderingParam}", "name": "TO"},
505:         {"url": "/players?pos=bcext&sort=ato&${jsRenderingParam}", "name": "A/TO Ratio"},
506:         {"url": "/players", "name": "More Stats"}
507:     ])
508:     <!-- Sortable Team Stats -->
509:     #generateDropdown('Sortable Team Stats', [
510:         {"url": "/teams?pos=sh&sort=ptspg&${jsRenderingParam}", "name": "Points"},
511:         {"url": "/teams?pos=sh&sort=fgpt&${jsRenderingParam}", "name": "FG Pt"},
512:         {"url": "/teams?pos=rb&sort=trebpg&${jsRenderingParam}", "name": "Rebounds"},
513:         {"url": "/teams", "name": "More Stats"}
514:     ])
515:     <!-- Player Stats by Team Dropdown -->
516: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
517: </div>
518: 
519: #elseif ($sport.enumCode == 3)
520: ## Soccer
521: 
522: #generateTabs($soccerTabsConfig, 'col-12 col-md-6 col-xl-3')
523: 
524: <div class="${dropdownsWrapperClass}">
525:     <!-- Offensive Leaders -->
526:     #generateDropdown('Offensive Leaders', [
527:         {"url": "/players?pos=sh&sort=sh&${jsRenderingParam}", "name": "Shots"},
528:         {"url": "/players", "name": "More Stats"}
529:     ])
530:     <!-- Goalie Leaders -->
531:     #generateDropdown('Goalie Leaders', [
532:         {"url": "/players?pos=g&sort=ga&${jsRenderingParam}", "name": "Goals Allowed"},
533:         {"url": "/players?pos=g&sort=sv&${jsRenderingParam}", "name": "Saves"},
534:         {"url": "/players?pos=g&sort=svpt&${jsRenderingParam}", "name": "More Stats"}
535:     ])
536:     <!-- Sortable Team Stats -->
537:     #generateDropdown('Sortable Team Stats', [
538:         {"url": "/teams?sort=g&${jsRenderingParam}", "name": "Goals"},
539:         {"url": "/teams?sort=sh&${jsRenderingParam}", "name": "Shots"},
540:         {"url": "/teams", "name": "More Stats"}
541:     ])
542:     <!-- Player Stats by Team Dropdown -->
543: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
544: </div>
545: 
546: #elseif ($sport.enumCode == 9)
547: ## Field hockey
548: 
549: #generateTabs($fieldHockeyTabsConfig, 'col-12 col-md-6 col-xl-3')
550: 
551: <div class="${dropdownsWrapperClass}">
552:     <!-- Offensive Leaders -->
553:     #generateDropdown('Offensive Leaders', [
554:         {"url": "/players?sort=sh&${jsRenderingParam}", "name": "Shots"},
555:         {"url": "/players", "name": "More Stats"}
556:     ])
557:     <!-- Goalie Leaders -->
558:     #generateDropdown('Goalie Leaders', [
559:         {"url": "/players?pos=goalie&sort=ga&${jsRenderingParam}", "name": "Goals Allowed"},
560:         {"url": "/players?pos=goalie&sort=sv&${jsRenderingParam}", "name": "Saves"},
561:         {"url": "/players?pos=goalie&sort=svpt&${jsRenderingParam}", "name": "More Stats"}
562:     ])
563:     <!-- Sortable Team Stats -->
564:     #generateDropdown('Sortable Team Stats', [
565:         {"url": "/teams?sort=g&${jsRenderingParam}", "name": "Goals"},
566:         {"url": "/teams?sort=sh&${jsRenderingParam}", "name": "Shots"},
567:         {"url": "/teams", "name": "More Stats"}
568:     ])
569:     <!-- Player Stats by Team Dropdown -->
570: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
571: </div>
572: 
573: #elseif ($sport.enumCode == 6 or $sport.enumCode == 10)
574: ## Men's or women's lacrosse
575: 
576: #generateTabs($lacrosseTabsConfig, 'col-12 col-md-6 col-xl-3')
577: 
578: <div class="${dropdownsWrapperClass}">
579:     <!-- Offensive Leaders -->
580:     #generateDropdown('Offensive Leaders', [
581:         {"url": "/players?sort=sh&${jsRenderingParam}", "name": "Shots"},
582:         {"url": "/players", "name": "More Stats"}
583:     ])
584:     <!-- Goalie Leaders -->
585:     #generateDropdown('Goalie Leaders', [
586:         {"url": "/players?pos=gk&sort=ga&${jsRenderingParam}", "name": "Goals Allowed"},
587:         {"url": "/players?pos=gk&sort=sv&${jsRenderingParam}", "name": "Saves"},
588:         {"url": "/players?pos=gk&${jsRenderingParam}", "name": "More Stats"}
589:     ])
590:     <!-- Sortable Team Stats -->
591:     #generateDropdown('Sortable Team Stats', [
592:         {"url": "/teams?sort=g&${jsRenderingParam}", "name": "Goals"},
593:         {"url": "/teams?sort=sh&${jsRenderingParam}", "name": "Shots"},
594:         {"url": "/teams", "name": "More Stats"}
595:     ])
596:     <!-- Player Stats by Team Dropdown -->
597:     $website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
598: </div>
599: 
600: #elseif ($sport.enumCode == 12)
601: ## Water Polo
602: 
603: #generateTabs($waterPoloTabsConfig, 'col-12 col-md-6 col-xl-3')
604: 
605: <div class="${dropdownsWrapperClass}">
606:     <!-- Offensive Leaders -->
607:     #generateDropdown('Offensive Leaders', [
608:         {"url": "/players?sort=sh&${jsRenderingParam}", "name": "Shots"},
609:         {"url": "/players", "name": "More Stats"}
610:     ])
611:     <!-- Goalie Leaders -->
612:     #generateDropdown('Goalie Leaders', [
613:         {"url": "/players?pos=g&sort=ga&${jsRenderingParam}", "name": "Goals Allowed"},
614:         {"url": "/players?pos=g&sort=sv&${jsRenderingParam}", "name": "Saves"},
615:         {"url": "/players?pos=g&${jsRenderingParam}", "name": "More Stats"}
616:     ])
617:     <!-- Sortable Team Stats -->
618:     #generateDropdown('Sortable Team Stats', [
619:         {"url": "/teams?sort=g&${jsRenderingParam}", "name": "Goals"},
620:         {"url": "/teams?sort=sh&${jsRenderingParam}", "name": "Shots"},
621:         {"url": "/teams", "name": "More Stats"}
622:     ])
623:     <!-- Player Stats by Team Dropdown -->
624: 	$website.include("${seasonPath}/teams?tmpl=stats-team-lineup-template")
625: </div>
626: 		
627: #else
628:         <div>
629:                 <div class="alert alert-primary" role="alert">
630:                         We do not support a leader page for this sport (${sport}).
631:                 </div>
632:         </div>
633: #end
634: 
635: </div>
636: 
637: $wiki.su
638: </div>