2016-17 Baseball Statistics - Santa Fe College

Team Summary
Title Record
Overall 38-13 (.745)
Conference 19-5 (.792)
Streak Lost 1
Home 19-5
Away 17-6
Neutral 2-2
Recent Results
Date Opponent Result
Apr 19 at Lake-Sumter State College W, 16-5
Apr 21 at Daytona State College W, 10-1
May 6 vs. Northwest Florida State College W, 7-2
May 7 vs. Palm Beach State College L, 4-3
May 8 vs. Northwest Florida State College W, 7-1
May 9 vs. Chipola College L, 11-1
Team Stats
Statistics Overall Conf
Games 51   24
At Bats 1727   874
Runs 371   207
Hits 515   272
Doubles 101   47
Triples 14   7
Home Runs 36   25
Runs Batted In 323   186
Extra Base Hits 151   79
Total Bases 752   408
Walks 198   104
Hit by pitch 47   18
Strikeouts 306   134
Sacrifice Flies 22   11
Sacrifice Hits 26   17
Hit into double play 24   13
Stolen Bases 59   33
Caught Stealing 16   7
Batting Average .298   .311
On Base Percentage .381   .391
Slugging Percentage .435   .467
Earned Run Average 3.64   3.48
Shutouts 5   3
At Bats Against 1627   794
Batting Average Against .255   .253
Home Games Played 24   12
Home Attendance 0   0
Home Attendance average 0   0
Hitting
There was a problem with a Velocity script
Pagesports/bsb/2016-17/teams/teaminfo-network-template
ErrorInvocation of method 'includeAgain' in class com.prestosports.render.ContentEngineInvoker threw exception javax.servlet.ServletException: javax.servlet.ServletException: java.lang.NumberFormatException: For input string: "HALVES" at fehtsg07nlttygk4sports/bsb/2016-17/teams/teaminfo-network-template[line 132, column 26]
Page source:
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4: 
5: #set ($locale = "en_us")
6: #set ($locale = $options.get("locale"))
7: 
8: #set ($showConf = true)
9: #if ($options.get("stats_hide_conference") and $options.get("stats_hide_conference").equalsIgnoreCase("hide"))
10:     #set ($showConf = false)
11: #end
12: 
13: #set ($teamId = $attributes.get("teamId"))
14: #set ($stats = $splits.overall)
15: 
16: #set ($pos = "")
17: #if ($sport.enumCode == 0) ## Football
18:     #set ($pos = "off")
19: #elseif ($sport.enumCode == 2) ## Basketball
20:     #set ($pos = "sh")
21: #elseif ($sport.enumCode == 3) ## Soccer
22: 	#set ($pos = "sc")
23: #elseif ($sport.enumCode == 9) ## Field Hockey
24:     #set ($pos = "fielder")
25: #end
26: 
27: #set ($posEsc = $formatter.escapeXml($request.getParameter("pos").toLowerCase()))
28: #if ($posEsc.length() > 0)
29:     #set ($pos = $posEsc)
30: #end
31: 
32: #if ($sport.enumCode == 9) ## Field Hockey
33:     #if ($pos == "goalie")
34:         #set ($pos = "fielder")
35:     #end
36:     #if ($pos == "gg")
37:         #set ($pos = "kg")
38:     #end
39: #end
40: 
41: #set ($restriction = 0)
42: #set ($restrictionEsc = $formatter.escapeXml($request.getParameter("r")))
43: #if ($restrictionEsc.length() > 0 && $restrictionEsc.equals("1"))
44:     #set ($restriction = 1)
45: #end
46: 
47: #set ($resultFormat     = "AP1")
48: #if ($options.get("schedule_result_format").equals("L, 1-2"))
49: 	#set ($resultFormat = "AP2")
50: #end
51: 
52: #set ($view = "profile")
53: #if ($request.getParameter("view"))
54:     #set ($view = $formatter.escapeXml($!request.getParameter("view")))
55: #end
56: 
57: #if ($briefsCategoriesLabels)
58:     #set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
59:     #set($firstCategoryPos = $briefsCategoriesSeason.keySet().iterator().next())
60: #end
61: 
62: #set ($showRoster = false)
63: #if ($options.get("stats_show_roster") and $options.get("stats_show_roster").equalsIgnoreCase("yes"))
64:     #set ($showRoster = true)
65: #end
66: 
67: #set ($showAttendance = true)
68: #if ($options.get("stats_show_attendance") and $options.get("stats_show_attendance").equalsIgnoreCase("hide"))
69:     #set ($showAttendance = false)
70: #end
71: 
72: ## MACROS
73: #macro (printTableHeader $label $class)
74: 	<th class="text-uppercase $class">$label</th>
75: #end
76: 
77: #macro (printResultAriaLabel $event)
78:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
79:     #if ($event.neutralSite.length() > 0 || $event.home) 
80:         #set ($ariaLabel = "${ariaLabel} vs.")
81: 	#else
82: 		#set ($ariaLabel = "${ariaLabel} at")
83: 	#end
84: 	#set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
85: 	#if ($event.neutralSite.length() > 0)
86: 		#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
87: 	#end
88: 	#set ($ariaLabel = "${ariaLabel} Box Score")
89:     aria-label="$ariaLabel"
90: #end
91: 
92: #macro (printBriefCategory $briefCatLabel $briefCatPos $r)
93:   	#if ($locale == "en_gb" && $briefCatLabel == "Defense")
94:         #set ($briefCatLabel = "Defence")
95:     #end
96:   	
97:     #if ($lineupDefaultSorting && $lineupDefaultSorting.containsKey($briefCatPos))
98:         #set ($sort = $lineupDefaultSorting.get($briefCatPos))
99:     #end	
100:   	
101:     #if ($allowChooseSort)
102:         #set ($sortEsc = $formatter.escapeXml($request.getParameter("sort")))
103:         #if ($sortEsc.length() > 0)
104:             #set ($sort = $sortEsc)
105:         #end
106:     #end
107:   	
108: 	#set ($url = "")
109:     #set ($url = "${page.sectionPage.sectionPage.url}/players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&pos=${briefCatPos}&r=${r}&tmpl=stats-bios-template")
110:   	
111:     #if ($lineupMin && $lineupMin.containsKey($briefCatPos))
112:         #set ($minStat = $lineupMin.get($briefCatPos))
113:         #set ($url = $url + "&min=" + $minStat)
114:     #end
115:   	
116:     #if ($lineupFilters)
117:         #if ($lineupFilters.containsKey("cs"))
118:             #set($url = $url + "&cs=n")
119:         #end
120:   		
121:         #if ($lineupFilters.containsKey("skipBlank"))
122:             #set($skipBlank = $lineupFilters.get("skipBlank"))	
123:   			
124:             #if ($skipBlank.contains($briefCatPos))
125:                 #set($url = $url + "&skipBlank=n")
126:             #end	
127:         #end	
128:     #end	
129:   	
130: 	<div class="my-3">
131: 		<h5>$briefCatLabel</h5>
132: 		$website.includeAgain($url)
133: 	</div>
134:     
135: #end ## printBriefCategory
136: 
137: #macro(printBriefCategories $r)
138: ## Set this for the inner page to pull something out
139: 	#if ($r == 1)
140: 		#set ($restrictionLabel = "conf")
141: 		$!request.setAttribute("teamStats", $splits.conference)
142: 	#else
143: 		#set ($restrictionLabel = "overall")
144: 		$!request.setAttribute("teamStats", $splits.overall)
145: 	#end
146: 
147: 	#if ($briefsCategoriesLabels)
148: 
149: 		#set($allowChooseSort = false)
150:   	
151: 		#if ($lineupFilters && $lineupFilters.containsKey("allowChooseSort"))
152: 			#set ($allowChooseSort = true)
153: 		#end
154: 
155: 		#if ($briefsCategoriesLabels.containsKey("Game"))
156: 			#set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game"))
157:       	
158: 			## Print Game categories tables
159: 			## Get the first Game category position
160: 			#set ($gamePos = $briefsCategoriesGame.keySet().iterator().next())
161:       
162: 			## GAME
163: 			<div #if ($gamePosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-game" role="tabpanel">
164: 			#foreach($briefsCatGame in $briefsCategoriesGame.entrySet())
165: 				#printBriefCategory($briefsCatGame.value, $briefsCatGame.key, $r)
166: 			#end
167: 			</div>
168: 
169: 			## Print the Season categories tables
170: 			#set ($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
171:    
172: 			## SEASON
173: 			<div #if ($seasonPosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-season" role="tabpanel">
174: 			#foreach ($briefCat in $briefsCategoriesSeason.entrySet())
175: 				#printBriefCategory($briefCat.value, $briefCat.key, $r)
176: 			#end
177: 			</div>
178:   		
179: 			## Print the Minutes categories tables
180: 			#if ($briefsCategoriesLabels.containsKey("Minutes"))
181: 				#set($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes"))
182: 				#set($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next())
183:       		
184: 				#set($showMinutesTab = false)
185: 				#if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos))
186: 					#set($lineupMinOverallValues = $lineupMinTeam.get($minutesPos))
187:   			
188: 					#set($lineupMinOverallStat = $lineupMinOverallValues[0])
189: 					#set($lineupMinOverallMinVal = $lineupMinOverallValues[1])
190: 					#set($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal))
191:   			
192: 					#if ($tool.math.round($splits.overall[$lineupMinOverallStat]) && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue)
193: 						#set($showMinutesTab = true)
194: 					#end	
195: 				#end
196: 
197: 				#if ($showMinutesTab)
198: 					## MINUTES
199: 					<div #if ($minutesPosActive) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-minutes" role="tabpanel">
200: 					#foreach($briefsCatMinutes in $briefsCategoriesMinutes.entrySet())
201: 						#printBriefCategory($briefsCatMinutes.value, $briefsCatMinutes.key, $r)
202: 					#end
203: 					</div>
204: 				#end
205: 			#end ## end minutes
206: 		#else
207: 
208: 			#set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
209: 			## SINGLE SEASON
210: 			#foreach($briefCat in $briefsCategoriesSeason.entrySet())
211: 				#printBriefCategory($briefCat.value, $briefCat.key, $r)
212: 			#end
213: 		#end
214: 		
215: 	#elseif ($lineupFilters)
216: 
217: 		## All of the supported sports has lineupFilters, so print it without matter it does not have briefs category, yeah voleyball is you :)
218: 		#set ($sort = $formatter.escapeXml($request.getParameter("sort")))
219: 		#set ($url = "../players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&r=${r}")
220: 		$website.includeAgain($url)
221: 		
222: 	#else
223: 		We do not support this sport
224: 	#end
225: #end ## printBriefCategories
226: 
227: #macro (printCategories $briefCategoryLabels $v)
228: 	<div class="tab-container">
229:         <div class="d-flex flex-row text-nowrap align-items-center justify-content-center">
230:             <div class="secondary-tab-select-container flex-fill">
231:                 <select class="tab-nav-select-helper form-select" id="teaminfo-tabs-secondary-${v}-select" aria-label="Choose a stat group">
232: 					#foreach($label in $briefCategoryLabels.entrySet())
233: 						#set($catLabel = $label.value)
234: 						#if ($locale == "en_gb" && $catLabel == "Defense")
235: 							#set ($catLabel = "Defence")
236: 						#end
237:                         <option value="#gamelog-${v}-${label.key}" #if ($pos == $key.pos || $foreach.first) selected #end>${catLabel}</option>
238: 					#end
239:                 </select>
240:                 <script>
241:                     $('.tab-nav-select-helper').on('change', function(e) {
242:                         var id = $(this).val();
243:                         $('a[data-bs-target="' + id + '"]').tab('show');
244:                     });
245:                 </script>
246:             </div>
247:         </div>
248: 		<div class="tab-nav d-none">
249: 			<ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs-secondary-${v}" role="tablist">
250: 				#foreach($label in $briefCategoryLabels.entrySet())
251: 					#set($catLabel = $label.value)
252: 					#if ($locale == "en_gb" && $catLabel == "Defense")
253: 						#set ($catLabel = "Defence")
254: 					#end
255: 					#set ($aClass = "nav-link text-nowrap text-center")
256: 					#if ($pos == $label.key || ($pos.length() == 0 && $velocityCount == 1))
257: 						#set ($aClass = "${aClass} active")
258: 					#end
259: 					<li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
260: 						<a class="${aClass}" href="${page.url}?view=${v}&pos=${label.key}" role="tab" data-bs-toggle="tab" data-bs-target="#gamelog-${v}-${label.key}">${catLabel}</a>
261: 					</li>
262: 				#end
263: 			</ul>
264: 		</div>
265: 		<div class="tab-content p-3">
266: 			#foreach ($briefCat in $briefCategoryLabels.entrySet())
267: 				#set ($classAttr = "tab-pane")
268: 				#if ($briefCat.key == $pos || ($pos.length() == 0 && $velocityCount == 1))
269: 					#set ($classAttr = "${classAttr} active")
270: 				#end
271: 				<div class="$classAttr" id="gamelog-${v}-${briefCat.key}" role="tabpanel">
272: 					#if ($v == "gamelog")
273: 						#gamelogData($briefCat.key)
274: 					#elseif ($v == "splits")
275: 						#splitsTeamNetworkData($briefCat.key)
276: 					#end
277: 				</div>
278: 			#end
279: 		</div>
280: 	</div>
281: #end ## printCategories
282:   
283: #macro (printSeasonGameMinutesTabs $r)
284:     #if ($briefsCategoriesLabels.containsKey("Game"))
285:         #set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game"))
286:         #set ($gamePos = $briefsCategoriesGame.keySet().iterator().next())
287: 		
288: 		#set ($restrictionLabel = "overall")
289: 		#if ($r == 1)
290: 			#set ($restrictionLabel = "conf")
291: 		#end
292:         	
293: 		#set ($showMinutesTab = false)
294:         #if ($briefsCategoriesLabels.containsKey("Minutes"))
295:             #set ($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes"))
296:             #set ($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next())
297:     		
298:             #if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos))
299:                 #set ($lineupMinOverallValues = $lineupMinTeam.get($minutesPos))
300:                 #set ($lineupMinOverallStat = $lineupMinOverallValues[0])
301:                 #set ($lineupMinOverallMinVal = $lineupMinOverallValues[1])
302:                 #set ($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal))
303:   			
304:                 #if ($tool.math.round($splits.overall[$lineupMinOverallStat]) && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue)
305:                     #set($showMinutesTab = true)
306:                 #end	
307:   		    #end
308: 		#end
309:     	<div class="tab-container">
310: 			<div class="tab-nav">
311: 				#set($gamePosActive = false)
312: 				#set($seasonPosActive = false)
313:                 #set($minutesPosActive = false)
314: 
315: 				#if($pos.equals($gamePos) || $pos.endsWith("g") || $pos.endsWith("gext"))
316: 					#set($gamePosActive = true)
317: 				#else
318: 					#if($showMinutesTab && $pos.equals($minutesPos))
319: 						#set($minutesPosActive = true)
320: 					#elseif($pos.equals($firstCategoryPos))
321: 						#set($seasonPosActive = true)
322: 					#end
323: 					#set($seasonPosActive = true)
324: 				#end
325: 
326: 
327: 				<ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" data-pos="$pos" data-gamePos="$pos.equals($gamePos)" data-firstCategoryPos="$pos.equals($firstCategoryPos)" data-minutesPos="$pos.equals($minutesPos)" id="teaminfo-tabs-secondary-minutes" role="tablist">
328: 					#printSubTab($gamePosActive, "${url}?view=lineup&r=${r}&pos=${gamePos}", "Game", "#lineup-${restrictionLabel}-game")
329: 					#printSubTab($seasonPosActive, "${url}?view=lineup&r=${r}&pos=${firstCategoryPos}", "Season", "#lineup-${restrictionLabel}-season")
330: 					#if ($showMinutesTab)
331: 						#printSubTab($minutesPosActive, "${url}?view=lineup&r=${r}&pos=${minutesPos}", "Minutes", "#lineup-${restrictionLabel}-minutes")
332: 					#end
333: 				</ul>
334: 			</div>
335: 			<div class="tab-content p-3">
336: 				#printBriefCategories($r)
337: 			</div>
338:         </div>
339:     #end
340: #end ## printSeasonGameMinutesTabs
341:   
342: #macro (printLineupTabs)
343: 	<div class="tab-container">
344:     	<div class="tab-nav">
345:         	<ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs-secondary-lineup" role="tablist">
346: 				#printSubTab(true, "${url}?view=lineup&r=0&pos=${pos}", "Overall", "#lineup-overall-pane")
347: 				#if ($showConf)
348: 					#printSubTab(false, "${url}?view=lineup&r=1&pos=${pos}", "Conference", "#lineup-conf-pane")
349: 				#end
350: 			</ul>
351: 		</div>
352: 		<div class="tab-content p-3">
353: 			<div class="tab-pane active" id="lineup-overall-pane" role="tabpanel">
354: 				#if ($briefsCategoriesLabels.containsKey("Game"))
355: 					#printSeasonGameMinutesTabs(0)
356: 				#else
357: 					#printBriefCategories(0)
358: 				#end
359: 			</div>
360: 			#if ($showConf)
361: 				<div class="tab-pane" id="lineup-conf-pane" role="tabpanel">
362: 					#if ($briefsCategoriesLabels.containsKey("Game"))
363: 						#printSeasonGameMinutesTabs(1)
364: 					#else
365: 						#printBriefCategories(1)
366: 					#end
367: 				</div>
368: 			#end
369: 		</div>
370:     </div>
371: #end ## printLineupTabs
372: 
373: #set($statClass = "flex-fill text-center border-bottom border-end p-3 col-3 col-lg-auto")
374: #macro (printStat $label $val $fmt)
375: 	<li class="$statClass" data-val="$val" data-format="$fmt">
376: 		<div class="d-flex flex-column justify-content-center align-items-center h-100">
377: 			<div class="small text-uppercase text-muted">$label</div>
378: 			<div class="fs-4 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, $fmt)</div>
379: 		</div>
380: 	</li>
381: #end
382: 
383: #macro (printStatGraph $label $val $fmt)
384: 	<li class="$statClass" data-val="$val" data-format="$fmt">
385: 		<div class="d-flex flex-column justify-content-center align-items-center h-100 proj-progress-card">
386: 			<div class="small text-uppercase text-muted">$label</div>
387: 			<div class="fs-4 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, $fmt)</div>
388: 			#set ($percent = $tool.math.mul($val, 100))
389: 			<div class="progress mt-2 w-100">
390: 				<div class="progress-bar bg-primary" role="progressbar" style="width: $formatter.formatNumber($percent, 1)%;" aria-valuenow="$formatter.formatNumber($percent, 1)" aria-valuemin="0" aria-valuemax="100"></div>
391: 			</div>
392: 		</div>
393: 	</li>
394: #end
395: 
396: #macro (printHighlights)
397:     #if ($highlights)
398:     	<ul class="team-stats my-3 list-unstyled d-flex flex-wrap justify-content-center align-items-stretch border-top border-start">
399:         #foreach ($highlight in $highlights.keySet())
400:             #set ($value = "-")
401:             #set ($value = $stats.get($highlight))
402: 			#set ($value = $tool.math.toInteger($value.replace('-', '0')))
403: 			#if($formats.get($highlight).equals("#.000") || $formats.get($highlight).equals(".000"))
404: 				#printStatGraph("$!highlights.get($highlight).replace('-per game', '/g').replace('per game', '')", $!value, $formats.get($highlight))
405: 			#else
406: 				#printStat("$!highlights.get($highlight).replace('-per game', '/g').replace('per game', '')", $!value, $formats.get($highlight))
407: 			#end
408: 
409:         #end
410:         </ul>
411:     #end
412: 
413: #end ## macro printHighlights
414: #macro (gamelogData $p)
415: 
416:     #set ($gamelogStats = $gamelogs.get($p))
417: 
418:     <table class="table table-hover">
419:         <thead class="thead-dark">
420:             <tr>
421:                 #printTableHeader("Date", "w-1 text-start")
422:                 #printTableHeader("Opponent", "")
423:                 #printTableHeader("Score", "text-center")
424:                 #foreach ($gamelog in $gamelogStats)
425:                     #printTableHeader($gamelog, "text-center")
426:                 #end
427:             </tr>
428:         </thead>
429:         #foreach ($event in $events)
430:             <tr>
431:                 <td class="text-nowrap text-start">
432:                     $formatter.formatDate($event.event.date, "MMM d") 
433:                     #if (!$event.event.overall)
434:                         #set ($atLeastOneNotOverall = true) # 
435:                     #end
436:                 </td>
437:                 <td class="text-nowrap">
438: 					#if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
439: 					$event.event.opponent.name
440:                 </td>
441:                 <td class="text-nowrap text-center">
442:                 #if ($event.event.statusCode >= 0)
443:                     #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
444:                         <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
445:                     #else
446:                         ${event.event.APResult}
447:                     #end
448:                 #else &nbsp; 
449:                 #end
450:                 </td>
451:                 #foreach ($gamelog in $gamelogStats.keySet())
452:                     #set ($value = "-")
453:                     #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
454:                     <td class="text-center text-nowrap">$value</td>
455:                 #end
456:             </tr>
457:         #end
458:     </table>
459: #end ## gamelogData
460: 
461: #macro (printRecentGames)
462:     <table class="table table-hover">
463:             <thead class="thead-dark">
464: 		<tr>
465: 			#printTableHeader("Date", "w-1 text-start")
466: 			#printTableHeader("Opponent", "")
467: 			#printTableHeader("Result", " text-center")
468: 		</tr>
469:             </thead>
470: 
471:         #set ($eventEnd = -1)
472:         #foreach ($event in $events)
473:             #if ($event.event.result.resolved)
474:                 #set ($eventEnd = $velocityCount)
475:             #end
476:         #end
477: 
478:         #set ($eventStart = $eventEnd - 5)
479:         #if ($eventStart < 0) #set ($eventStart = 0) #end
480: 
481:         #foreach ($event in $events)
482:             #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
483:                 <tr>
484:                     <td class="text-nowrap text-start"><span class="date">$formatter.formatDate($event.event.date, "MMM d")</span></td>
485:                     <td>
486:                         #if ($event.event.neutralSite.length() > 0) vs.
487:                         #elseif (!$event.event.home) at
488:                         #else ## nothing for a home game
489:                         #end
490:                         $event.event.opponent.name
491:                     </td>
492:                     <td class="text-center">
493:                         #if ($event.event.statusCode >= 0)
494: 							## FORMATTED RESULT
495: 							#set ($formattedResult = "")
496: 
497: 							#if ($resultFormat.equals("AP1"))
498: 								#set ($formattedResult = $event.event.APResult)
499: 							#elseif ($resultFormat.equals("AP2"))
500: 								#set ($formattedResult = $event.event.AP2Result)
501: 							#end
502: 
503: 							#if ($formattedResult.startsWith("W, "))
504: 								#set ($formattedResult = $formattedResult.replace("W, ", '<span class="winner event-winner">W</span>, '))
505: 							#elseif ($formattedResult.startsWith("L, "))
506: 								#set ($formattedResult = $formattedResult.replace("L, ", '<span class="loser event-loser">L</span>, '))
507: 							#end
508: 
509:                             #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
510:                                 <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${formattedResult}</a>
511:                             #else
512:                                 ${formattedResult}
513:                             #end
514:                         #end
515:                     </td>
516:                 </tr>
517:             #end
518:         #end
519:     </table>
520: #end ## printRecentGames
521: 
522: #macro (splitTeamNetwork $statPosBriefs $label $stats)
523:     <tr>
524:         <th scope="row" class="font-weight-normal text-end">${label}</th>
525:         #foreach ($brief in $statPosBriefs.keySet())
526:             #set ($value = "-")
527:             #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
528:             <td class="text-center text-nowrap">#if ($value.length() > 0) $value #else - #end</td>
529:         #end
530:     </tr>
531: #end ## split
532: 
533: #macro (splitsTeamNetworkData $p)
534: 	#set ($statPosBriefs = $briefs.get($p))
535: 	#set ($colspan = $tool.math.add($statPosBriefs.size(), 1))  
536:     
537: 	#if ($statPosBriefs.size() > 0)
538: 		<table class="table table-hover">
539:             <thead class="thead-dark">
540:                 <tr>
541:                     <th class="text-uppercase" aria-label="Title"> </th>
542:                     #foreach ($brief in $statPosBriefs)
543:                         #printTableHeader($brief, "text-center")
544:                     #end
545:                 </tr>
546:             </thead>
547: 			#splitTeamNetwork($statPosBriefs, "Total", $splits.overall)
548: 			#if ($showConf)
549: 				#splitTeamNetwork($statPosBriefs, "Conference", $splits.conference)
550: 				#splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
551: 			#else
552: 				#splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
553: 			#end ## hide overall/conf
554: 
555: 			<tr class="bg-transparent">
556: 				<td colspan="$colspan">&nbsp;</td>
557: 			</tr>
558: 
559: 			#splitTeamNetwork($statPosBriefs, "Home", $splits.home)
560: 			#splitTeamNetwork($statPosBriefs, "Away", $splits.away)
561: 			#splitTeamNetwork($statPosBriefs, "Neutral", $splits.neutral)
562: 
563: 			<tr class="bg-transparent">
564: 				<td colspan="$colspan">&nbsp;</td>
565: 			</tr>
566: 
567: 			#foreach($gameResult in $gamesResults.entrySet())
568: 				#if ($gameResult.key == "wins")
569: 					#set ($splitGameResult = $splits.inWins)
570: 				#elseif ($gameResult.key == "losses")
571: 					#set ($splitGameResult = $splits.inLosses)
572: 				#elseif ($gameResult.key == "ties")
573: 					#set ($splitGameResult = $splits.inTies)
574: 				#end
575:     
576: 				#splitTeamNetwork($statPosBriefs, $gameResult.value, $splitGameResult)
577: 			#end
578: 
579: 			<tr class="bg-transparent">
580: 				<td colspan="$colspan">&nbsp;</td>
581: 			</tr>
582: 
583: 			#if ($monthsPlayed and $monthsPlayed.size() > 0)
584: 				#foreach($month in $monthsPlayed)
585: 					#if ($month == 'January')
586: 						#set ($splitMonth = $splits.january)
587: 					#elseif ($month == 'February')
588: 						#set ($splitMonth = $splits.february)
589: 					#elseif ($month == 'March')
590: 						#set($splitMonth = $splits.march)
591: 					#elseif ($month == 'April')
592: 						#set($splitMonth = $splits.april)
593: 					#elseif ($month == 'May')
594: 						#set ($splitMonth = $splits.may)
595: 					#elseif ($month == 'June')
596: 						#set ($splitMonth = $splits.june)
597: 					#elseif ($month == 'July')
598: 						#set($splitMonth = $splits.july)
599: 					#elseif ($month == 'August')
600: 						#set ($splitMonth = $splits.august)
601: 					#elseif ($month == 'September')
602: 						#set($splitMonth = $splits.september)
603: 					#elseif ($month == 'October')
604: 						#set($splitMonth = $splits.october)
605: 					#elseif ($month == 'November')
606: 						#set ($splitMonth = $splits.november)
607: 					#elseif ($month == 'December')
608: 						#set($splitMonth = $splits.december)
609: 					#end
610:   
611: 					#splitTeamNetwork($statPosBriefs, $month, $splitMonth)
612: 				#end ## foreach
613: 			#end
614: 		</table>
615: 	#end
616: #end ## splitsTeamNetworkData
617: 
618: #macro (printAttendance)
619:     #if ($showAttendance)
620:         <table class="table table-hover">
621:             <thead class="thead-dark">
622:                 <tr>
623:                     #printTableHeader("Date", "w-1 text-start")
624:                     #printTableHeader("Opponent", "")
625:                     #printTableHeader("Score", "text-center")
626:                     #printTableHeader("Attend", "text-center")
627:                 </tr>
628:             </thead>
629:             #set ($counter = 0)
630:             #foreach ($event in $events)
631:                 <tr>
632:                     <td class="text-nowrap text-start">$formatter.formatDate($event.event.date, "MMM d")</td>
633:                     <td class="text-nowrap">
634:                         #if ($event.event.neutralSite.length() > 0) vs.
635:                         #elseif (!$event.event.home) at
636:                         #else ## nothing for a home game
637:                         #end
638:                         $event.event.opponent.name
639:                     </td>
640:                     <td class="text-nowrap text-center">
641:                     #if ($event.event.statusCode >= 0)
642:                         #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
643:                             <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
644:                         #else
645:                             ${event.event.result}
646:                         #end
647:                     #else &nbsp; #end
648:                     </td>
649:                     <td class="text-nowrap text-center">
650:                         #set ($value = "-")
651:                         #set ($value = $!formatter.formatNumber($event.stats.get('at'), $formats.get('at')))
652:                         #if ($value.length() > 0) $value #else - #end
653:                     </td>
654:                 </tr>
655:             #end
656:         </table>
657:     #end ## showAttendance
658: #end
659: 
660: #macro (printTab $viewParam $label)
661: 	#set ($classAttr = "nav-link text-nowrap text-center")
662: 	#if ($viewParam == $view)
663: 		#set ($classAttr = "${classAttr} active")
664: 	#end
665: 	<li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
666: 		<a href="${page.url}?view=${viewParam}" class="$classAttr" role="tab" data-bs-toggle="tab" data-bs-target="#${viewParam}" aria-controls="$viewParam">$label</a>
667: 	</li>
668: #end
669: 
670: #macro (printSubTab $active $url $label $target)
671: 	<li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0">
672: 		<a class="nav-link text-nowrap text-center #if ($active) active #end" href="$url" role="tab" data-bs-toggle="tab" data-bs-target="$target">$label</a>
673: 	</li>
674: #end
675: 
676: #macro (printPaneAttrs $viewParam)
677: 	#set ($classAttr = "tab-pane")
678: 	#if ($viewParam == $view)
679: 		#set ($classAttr = "tab-pane active")
680: 	#else
681: 		#set ($classAttr = "${classAttr} fade")
682: 	#end
683: 	
684: 	class="$classAttr" role="tabpanel" id="$viewParam"
685: #end
686: 
687: #macro (printCoachViewUrl)
688: 	#set ($coachViewUrl = "${page.url}?tmpl=teaminfo-network-monospace-template")
689:     #set ($enumCode = $sport.enumCode)
690:     
691: 	#if ($enumCode == 2)
692:         #set ($coachViewUrl = "${coachViewUrl}&sort=ptspg") 
693:     #elseif ($enumCode == 1 || $enumCode == 11)
694:         #set ($coachViewUrl = "${coachViewUrl}&sort=ab&pos=h")
695:     #end
696:     
697:     #if ($enumCode == 7 || $enumCode == 8 || $enumCode > 11) #else
698:         <li class="nav-item" data-skip="true"><a href="$coachViewUrl" target="_blank" class="nav-link text-nowrap text-center">Coach's View</a></li>
699:     #end
700: #end
701: 
702: #macro (printTabs)
703: 	$request.setAttribute("icl-responsive-tabs-script", true)
704: 
705: 	<div class="tab-nav">
706:     	<ul class="nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-start gap-3" id="teaminfo-tabs" role="tablist">
707:     		#printTab("profile", "Team Profile")
708:     		
709:     		#if ($showRoster)
710:     			#printTab("roster", "Roster")
711:     		#end
712:     		
713:     		#printTab("lineup", "Lineup")
714:     		#printTab("gamelog", "Game Log")
715:     		#printTab("splits", "Split Stats")
716:     		
717:     		#if ($showAttendance)
718:     			#printTab("attendance", "Attendance")
719:     		#end
720:     		
721:             #printCoachViewUrl
722:         </ul>
723: 	</div>
724: #end ## printTabs
725: 
726: #macro (printFilters)
727: <div class="p-3 border my-3 d-print-none">
728:     <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">
729:         <div class="flex-fill">
730:             <div class="d-flex flex-wrap align-items-end justify-content-between gap-3 flex-row">
731: 				$!request.setAttribute("pageObj", $page)
732:                 $website.includeAgain("conf-season-filter-template")
733:             </div>
734:         </div>
735:         <div class="" role="group" aria-label="Print friendly version">
736:             <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary text-nowrap"><span class="fa fa-print"></span> Print</a>
737:         </div>
738:     </div>
739: </div>
740: #end ## printFilters
741: ############ END MACROS #############
742: 
743: #set ($pageTitle = $page.title)
744: #if($pageTitle.trim().length() == 0)
745: 	#set($pageTitle = $page.sectionPage.getTitle())
746: #end
747: 
748: #if ($pageTitle.trim().length() == 0)
749: 	#set ($season = "")
750: 	#if ($page.url.matches(".*/\d{4}-\d{2}/.*"))
751: 		#set ($truncateStr = $page.url.split("/\d{4}-\d{2}/").get(0))
752: 		#set ($season = $page.url.replace($truncateStr, "").substring(1, 8))
753: 	#end
754: 	
755: 	#set ($gender = "")
756: 	#if ($sport.enumCode == 6 or $sport.enumCode == 10)
757: 	#else
758: 		#if ($page.url.matches(".*/sports/m.*") || $page.url.matches(".*/sports/m-*"))
759: 			##set ($gender = "Men's")
760: 		#elseif ($page.url.matches(".*/sports/w.*") || $page.url.matches(".*/sports/w-*"))
761: 			##set ($gender = "Women's")
762: 		#end
763: 	#end
764: 	
765: 	#set ($pageTitle = "${season} ${gender} ${sport} Statistics")
766: 
767: #end
768: 
769: #if ($attributes.get("school_name").length() > 0)
770: 	#set ($pageTitle = "${pageTitle} - ${attributes.get('school_name')}")
771: #end
772: 
773: $!request.setAttribute("pageTitle", "${pageTitle}")
774: 
775: <head><title>$pageTitle</title></head>
776: 	
777: 
778: <div class="page-content team-stats">
779:     
780:     <h1>$pageTitle</h1>
781: 
782: 	#printFilters
783: 	
784: 	## TEAM HIGHLIGHT STATS
785: 	<div class="my-3">#printHighlights</div>
786: 
787:     ## TABS
788: 	<div class="tabs-container my-3">
789:         #printTabs
790:     
791:         <div class="tab-content p-3 border border-top-0">
792:             
793:             ## TEAM PROFILE
794:             <div #printPaneAttrs("profile")>
795:                 
796:                 <div class="row">
797:                     <div class="col-lg">
798:     					<div class="mb-3">
799: 							<h5>Team Summary</h5>
800: 							<div class="stats-container table-responsive">
801: 								$website.include("${page.sectionPage.sectionPage.url}/schedule?teamId=${teamId}&tmpl=schedule-data-template")
802: 							</div>
803:     					</div>
804:     					<div class="mb-3">
805:     						<h5>Recent Results</h5>
806:     						<div class="stats-container table-responsive">#printRecentGames</div>
807:     					</div>
808:                     </div>
809:                     <div class="col-lg">
810:     					<div class="mb-3">
811: 							<h5>Team Stats</h5>
812: 							<div class="stats-container table-responsive">
813: 								$website.include("${page.sectionPage.url}/teams?tmpl=stats-teams-rank-template&rank=${teamId}")
814: 							</div>
815:     					</div>
816:                     </div>
817:                 </div>
818:             </div> ## team profile
819:     
820:             ## ROSTER
821:             #if ($showRoster)
822:                 <div #printPaneAttrs("roster")>
823: 					$website.includeAgain("../players?teamId=${teamId}&view=roster&tmpl=stats-bios-template")
824:                 </div>
825:             #end
826:     
827:             ## LINEUP
828:             <div #printPaneAttrs("lineup")>
829:                 ## start of overall/conference
830:                 #set ($url = $request.requestURI)
831:     			#printLineupTabs()
832:                
833:                 Download roster:
834:                 <a href="../players?teamId=${attributes.teamId}&view=ext">${rosterExtension} (First Last) </a> | 
835:                 <a href="../players?teamId=${attributes.teamId}&view=ext&type=lf"> ${rosterExtension} (Last, First)</a>
836:                 #if ($rosterExtraExtension)
837:                     <a href="../players?teamId=${attributes.teamId}&view=exte">${rosterExtraExtension} (First Last)</a> | 
838:                     <a href="../players?teamId=${attributes.teamId}&view=exte&type=lf">${rosterExtraExtension} (Last, First)</a>
839: 				#end
840:             </div> ## lineup
841:     
842:             ## GAMELOG
843:             <div #printPaneAttrs("gamelog")>
844:             	<div class="stats-container table-responsive">
845: 					#if ($gamelogsCategoriesLabels && $gamelogsCategoriesLabels.size() > 1)
846: 						#printCategories($gamelogsCategoriesLabels, 'gamelog')
847: 					#else
848: 						#gamelogData($pos)
849: 					#end
850:     			</div>
851:             </div>
852:     
853:             ## SPLITS
854:             <div #printPaneAttrs("splits")>
855:     			<div class="stats-container table-responsive">
856: 					#if ($briefsTeamCategoriesLabels && $briefsTeamCategoriesLabels.size() > 1)
857: 						#printCategories($briefsTeamCategoriesLabels, 'splits')
858: 					#else
859: 						#splitsTeamNetworkData($pos)
860: 					#end
861: 				</div>
862:             </div> ## splits
863:     
864:             ## ATTENDANCE
865:             <div #printPaneAttrs("attendance")>
866: 				<div class="stats-container table-responsive">#printAttendance</div>
867:             </div>
868:         </div> ## tab-content
869: 	</div> ## tab-container
870: </div> ## stats-container
871: $wiki.su