2017-18 Soccer Statistics - Guelph

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