There was a problem with a Velocity script |
Page | sports/fball/2022-23p/stats-leader-template |
Error | Invocation 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>
|
|