2019-20 Soccer Statistics - MCLA

Games
18
Goals
17
Goals-
0.94
Shot %
.129
Shots-
7.3
GAA
2.48
Team Summary
  Record
Overall 3-14-1 (.194)
Conference 1-6 (.143)
Streak Won 1
Home 2-7-1
Away 1-7
Neutral 0-0
Recent Results
Date Opponent Result
Oct 12 Worcester St. L, 1-0
Oct 19 at Westfield St. L, 8-0
Oct 22 Hartwick L, 3-0
Oct 26 at Mass. Maritime L, 3-1
Oct 30 at Utica L, 5-0
Nov 2 Framingham St. W, 1-0
Team Stats
  Overall Conf
Games 18 7
Shots 132 39
Goals scored 17 2
Shot percentage .129 .051
Shots-per game 7.3 5.6
Shots on goal 74 16
SOG percentage .561 .410
Assists 7 0
Corner kicks 36 11
Penalty kicks 1-1 0-0
Yellow cards 1 1
Red cards 0 0
Shutouts 2 1
Home Attendance 1104 432
Home Attendance average 110 144
Field Players
No. Name Yr Pos gp gs gpg a/g pts/g sh/g sh% sog/g sog%
21 Cetera Moore M 18 18 .33 .06 .72 2.22 .150 .89 .400
13 Alyssa Porter F/M 18 17 .17 .00 .33 1.33 .125 .78 .583
20 Madeline Gibney M 18 14 .11 .06 .28 .89 .125 .61 .688
8 Claudia Bresett M 18 18 .06 .00 .11 .67 .083 .39 .583
11 Natalia Gerena F 18 18 .06 .11 .22 .39 .143 .28 .714
15 Caitlyn Maloney M 18 7 .06 .11 .22 .39 .143 .22 .571
16 Hannah Van de Water M 18 16 .06 .06 .17 .44 .125 .22 .500
26 Jackie Murphy B/M 17 4 .00 .00 .00 .18 .000 .18 1.000
19 Savanna Amaral B 14 1 .07 .00 .14 .14 .500 .14 1.000
14 Carol Fagan B 13 7 .08 .00 .15 .15 .500 .15 1.000
18 Emma Marlay-Wright M/F 12 - .00 .00 .00 .25 .000 .17 .667
10 Hannah Sorensen B 17 12 .00 .00 .00 .12 .000 .12 1.000
12 Miranda Wissman M 18 18 .00 .00 .00 .11 .000 .11 1.000
22 Anissa Baptiste B 11 1 .00 .00 .00 .09 .000 .00 .000
32 Madison Breese GK 3 1 .00 .00 .00 .00 - .00 -
31 Jillian Currier GK 1 - .00 .00 .00 .00 - .00 -
9 Sophie Elser M/F 8 0 .00 .00 .00 .13 .000 .00 .000
24 Caitlyn Falzone F 11 0 .00 .00 .00 .09 .000 .00 .000
23 Tess Gonsalves B 9 1 .00 .00 .00 .00 - .00 -
6 Skyelyn Haynes M 18 9 .00 .00 .00 .00 - .00 -
7 Taylor Jarosz B 17 17 .00 .00 .00 .06 .000 .00 .000
1 Megan Richardson GK 17 17 .00 .00 .00 .00 - .00 -
17 Haley Rode B 9 0 .00 .00 .00 .00 - .00 -
  Totals     18 18 .94 .39 2.28 7.33 .129 4.11 .561
  Opponent     18 18 .94 1.83 6.94 25.44 .100 13.56 .533
Goalkeepers
No. Name Yr Pos gp gs min/g ga/g gaa sv/g sv%
32 Madison Breese GK 3 1 47:39 .67 1.26 1.67 .714
31 Jillian Currier GK 1 0 45:00 2.00 4.00 6.00 .750
1 Megan Richardson GK 17 17 87:01 2.47 2.56 10.94 .816
  Totals     18 18 92:38 2.56 2.48 11.00 .811
  Opponent     18 18 92:36 .94 0.92 3.17 .770
Field Players
No. Name Yr Pos gp gs g a pts sh sh% sog sog% yc rc pk gw
21 Cetera Moore M 18 18 6 1 13 40 .150 16 .400 0 0 0-0 2
13 Alyssa Porter F/M 18 17 3 0 6 24 .125 14 .583 0 0 0-0 0
20 Madeline Gibney M 18 14 2 1 5 16 .125 11 .688 0 0 1-1 1
8 Claudia Bresett M 18 18 1 0 2 12 .083 7 .583 0 0 0-0 0
11 Natalia Gerena F 18 18 1 2 4 7 .143 5 .714 0 0 0-0 0
15 Caitlyn Maloney M 18 7 1 2 4 7 .143 4 .571 0 0 0-0 0
16 Hannah Van de Water M 18 16 1 1 3 8 .125 4 .500 0 0 0-0 0
26 Jackie Murphy B/M 17 4 0 0 0 3 .000 3 1.000 0 0 0-0 0
19 Savanna Amaral B 14 1 1 0 2 2 .500 2 1.000 0 0 0-0 0
14 Carol Fagan B 13 7 1 0 2 2 .500 2 1.000 0 0 0-0 0
18 Emma Marlay-Wright M/F 12 - 0 0 0 3 .000 2 .667 1 0 0-0 0
10 Hannah Sorensen B 17 12 0 0 0 2 .000 2 1.000 0 0 0-0 0
12 Miranda Wissman M 18 18 0 0 0 2 .000 2 1.000 0 0 0-0 0
22 Anissa Baptiste B 11 1 0 0 0 1 .000 0 .000 0 0 0-0 0
32 Madison Breese GK 3 1 0 0 0 0 - 0 - 0 0 0-0 0
31 Jillian Currier GK 1 - 0 0 0 0 - 0 - 0 0 0-0 0
9 Sophie Elser M/F 8 0 0 0 0 1 .000 0 .000 0 0 0-0 0
24 Caitlyn Falzone F 11 0 0 0 0 1 .000 0 .000 0 0 0-0 0
23 Tess Gonsalves B 9 1 0 0 0 0 - 0 - 0 0 0-0 0
6 Skyelyn Haynes M 18 9 0 0 0 0 - 0 - 0 0 0-0 0
7 Taylor Jarosz B 17 17 0 0 0 1 .000 0 .000 0 0 0-0 0
1 Megan Richardson GK 17 17 0 0 0 0 - 0 - 0 0 0-0 0
17 Haley Rode B 9 0 0 0 0 0 - 0 - 0 0 0-0 0
  Totals     18 18 17 7 41 132 .129 74 .561 1 0 1-1 3
  Opponent     18 18 46 33 125 458 .100 244 .533 2 1 1-1 14
Goalkeepers
No. Name Yr Pos gp gs min ga gaa sv sv% wins losses ties shutouts
32 Madison Breese GK 3 1 142:57 2 1.26 5 .714 1 0 0 0/0
31 Jillian Currier GK 1 0 45:00 2 4.00 6 .750 0 0 0 0/0
1 Megan Richardson GK 17 17 1479:20 42 2.56 186 .816 2 14 1 1/0
  Totals     18 18 1667:17 46 2.48 198 .811 3 14 1 2
  Opponent     18 18 1666:49 17 0.92 57 .770 14 3 1 12
There was a problem with a Velocity script
Pageteaminfo-network-template
ErrorVM #printSeasonGameMinutesTabs: too few arguments to macro. Wanted 3 got 1 at teaminfo-network-template[line 336, column 41]
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 = "kickers")
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 == 2) ## Basketball
33:     #if ($pos == "bc")
34:         #set ($pos = "sh")
35:     #end
36:     #if ($pos == "bt")
37:         #set ($pos = "st")
38:     #end
39:     #if ($pos == "bm")
40:         #set ($pos = "sm")
41:     #end
42: #end
43: 
44: #if ($sport.enumCode == 3) ## Soccer
45:     #if ($pos == "goalie")
46:         #set ($pos = "kickers")
47:     #end
48:     #if ($pos == "gg")
49:         #set ($pos = "kg")
50:     #end
51: #end
52: 
53: #if ($sport.enumCode == 9) ## Field Hockey
54:     #if ($pos == "goalie")
55:         #set ($pos = "fielder")
56:     #end
57:     #if ($pos == "gg")
58:         #set ($pos = "kg")
59:     #end
60: #end
61: 
62: #set ($restriction = 0)
63: #set ($restrictionEsc = $formatter.escapeXml($request.getParameter("r")))
64: #if ($restrictionEsc.length() > 0 && $restrictionEsc.equals("1"))
65:     #set ($restriction = 1)
66: #end
67: 
68: #set ($view = "profile")
69: #if ($request.getParameter("view"))
70:     #set ($view = $formatter.escapeXml($!request.getParameter("view")))
71: #end
72: 
73: #if ($briefsCategoriesLabels)
74:     #set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
75:     #set($firstCategoryPos = $briefsCategoriesSeason.keySet().iterator().next())
76: #end
77: 
78: #set ($showRoster = false)
79: #if ($options.get("stats_show_roster") and $options.get("stats_show_roster").equalsIgnoreCase("yes"))
80:     #set ($showRoster = true)
81: #end
82: 
83: #set ($showAttendance = true)
84: #if ($options.get("stats_show_attendance") and $options.get("stats_show_attendance").equalsIgnoreCase("hide"))
85:     #set ($showAttendance = false)
86: #end
87: 
88: ## MACROS
89: #macro (printTableHeader $label $class)
90: 	<th class="text-uppercase $class">$label</th>
91: #end
92: 
93: #macro (printResultAriaLabel $event)
94:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
95:     #if ($event.neutralSite.length() > 0 || $event.home) 
96:         #set ($ariaLabel = "${ariaLabel} vs.")
97: 	#else
98: 		#set ($ariaLabel = "${ariaLabel} at")
99: 	#end
100: 	#set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
101: 	#if ($event.neutralSite.length() > 0)
102: 		#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
103: 	#end
104: 	#set ($ariaLabel = "${ariaLabel} Box Score")
105:     aria-label="$ariaLabel"
106: #end
107: 
108: #macro (printBriefCategory $briefCatLabel $briefCatPos $r)
109:   	#if ($locale == "en_gb" && $briefCatLabel == "Defense")
110:         #set ($briefCatLabel = "Defence")
111:     #end
112:   	
113:     #if ($lineupDefaultSorting && $lineupDefaultSorting.containsKey($briefCatPos))
114:         #set ($sort = $lineupDefaultSorting.get($briefCatPos))
115:     #end	
116:   	
117:     #if ($allowChooseSort)
118:         #set ($sortEsc = $formatter.escapeXml($request.getParameter("sort")))
119:         #if ($sortEsc.length() > 0)
120:             #set ($sort = $sortEsc)
121:         #end
122:     #end
123:   	
124: 	#set ($url = "")
125:     #set ($url = "${page.sectionPage.sectionPage.url}/players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&pos=${briefCatPos}&r=${r}&tmpl=stats-bios-template")
126:   	
127:     #if ($lineupMin && $lineupMin.containsKey($briefCatPos))
128:         #set ($minStat = $lineupMin.get($briefCatPos))
129:         #set ($url = $url + "&min=" + $minStat)
130:     #end
131:   	
132:     #if ($lineupFilters)
133:         #if ($lineupFilters.containsKey("cs"))
134:             #set($url = $url + "&cs=n")
135:         #end
136:   		
137:         #if ($lineupFilters.containsKey("skipBlank"))
138:             #set($skipBlank = $lineupFilters.get("skipBlank"))	
139:   			
140:             #if ($skipBlank.contains($briefCatPos))
141:                 #set($url = $url + "&skipBlank=n")
142:             #end	
143:         #end	
144:     #end	
145:   	
146: 	<div class="my-3">
147: 		<h5>$briefCatLabel</h5>
148: 		$website.includeAgain($url)
149: 	</div>
150:     
151: #end ## printBriefCategory
152: 
153: #macro(printBriefCategories $r)
154: ## Set this for the inner page to pull something out
155: 	#if ($r == 1)
156: 		#set ($restrictionLabel = "conf")
157: 		$!request.setAttribute("teamStats", $splits.conference)
158: 	#else
159: 		#set ($restrictionLabel = "overall")
160: 		$!request.setAttribute("teamStats", $splits.overall)
161: 	#end
162: 
163: 	#if ($briefsCategoriesLabels)
164: 		#set($allowChooseSort = false)
165:   	
166: 		#if ($lineupFilters && $lineupFilters.containsKey("allowChooseSort"))
167: 			#set ($allowChooseSort = true)
168: 		#end
169: 
170: 		#if ($briefsCategoriesLabels.containsKey("Game"))
171: 			#set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game"))
172:       	
173: 			## Print Game categories tables
174: 			## Get the first Game category position
175: 			#set ($gamePos = $briefsCategoriesGame.keySet().iterator().next())
176:       
177: 			## GAME
178: 			<div #if ($pos.equals($gamePos)) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-game" role="tabpanel">
179: 			#foreach($briefsCatGame in $briefsCategoriesGame.entrySet())
180: 				#printBriefCategory($briefsCatGame.value, $briefsCatGame.key, $r)
181: 			#end
182: 			</div>
183: 
184: 			## Print the Season categories tables
185: 			#set ($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
186:    
187: 			## SEASON
188: 			<div #if ($pos.equals($firstCategoryPos)) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-season" role="tabpanel">
189: 			#foreach ($briefCat in $briefsCategoriesSeason.entrySet())
190: 				#printBriefCategory($briefCat.value, $briefCat.key, $r)
191: 			#end
192: 			</div>
193:   		
194: 			## Print the Minutes categories tables
195: 			#if ($briefsCategoriesLabels.containsKey("Minutes"))
196: 				#set($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes"))
197: 				#set($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next())
198:       		
199: 				#set($showMinutesTab = false)
200: 				#if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos))
201: 					#set($lineupMinOverallValues = $lineupMinTeam.get($minutesPos))
202:   			
203: 					#set($lineupMinOverallStat = $lineupMinOverallValues[0])
204: 					#set($lineupMinOverallMinVal = $lineupMinOverallValues[1])
205: 					#set($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal))
206:   			
207: 					#if ($splits.overall[$lineupMinOverallStat] && $tool.math.round($splits.overall[$lineupMinOverallStat]) >= $lineupMinOverallMinNumericValue)
208: 						#set($showMinutesTab = true)
209: 					#end	
210: 				#end
211: 
212: 				#if ($showMinutesTab)
213: 					## MINUTES
214: 					<div #if ($pos.equals($minutesPos)) class="tab-pane active" #else class="tab-pane" #end id="lineup-${restrictionLabel}-minutes" role="tabpanel">
215: 					#foreach($briefsCatMinutes in $briefsCategoriesMinutes.entrySet())
216: 						#printBriefCategory($briefsCatMinutes.value, $briefsCatMinutes.key, $r)
217: 					#end
218: 					</div>
219: 				#end
220: 			#end ## end minutes
221: 		#else
222: 
223: 			#set($briefsCategoriesSeason = $briefsCategoriesLabels.get("Season"))
224: 			## SINGLE SEASON
225: 			#foreach($briefCat in $briefsCategoriesSeason.entrySet())
226: 				#printBriefCategory($briefCat.value, $briefCat.key, $r)
227: 			#end
228: 		#end
229: 		
230: 	#elseif ($lineupFilters)
231: 
232: 		## All of the supported sports has lineupFilters, so print it without matter it does not have briefs category, yeah voleyball is you :)
233: 		#set ($sort = $formatter.escapeXml($request.getParameter("sort")))
234: 		#set ($url = "../players?teamId=${attributes.teamId}&view=lineup&sort=$!{sort}&r=${r}")
235: 		$website.includeAgain($url)
236: 		
237: 	#else
238: 		We do not support this sport
239: 	#end
240: #end ## printBriefCategories
241: 
242: #macro (printCategories $briefCategoryLabels $v)
243: 	<div class="nav nav-pills mb-3" role="tablist">
244: 		#foreach($label in $briefCategoryLabels.entrySet())
245: 			#set($catLabel = $label.value)
246: 			#if ($locale == "en_gb" && $catLabel == "Defense")
247: 				#set ($catLabel = "Defence")
248: 			#end
249: 			#set ($btnClass = "btn btn-outline-secondary rounded-0")
250: 			#if ($pos == $label.key || ($pos.length() == 0 && $velocityCount == 1)) 
251: 				#set ($btnClass = "${btnClass} active") 
252: 			#end 
253: 			<button class="$btnClass" data-url="${page.url}?view=${v}&pos=${label.key}" data-toggle="tab" data-target="#gamelog-${v}-${label.key}" style="margin-right:-1px">${catLabel}</button>
254: 		#end
255: 	</div>
256: 	<div class="tab-content">
257: 		#foreach ($briefCat in $briefCategoryLabels.entrySet())
258: 			#set ($classAttr = "tab-pane")
259: 			#if ($briefCat.key == $pos || ($pos.length() == 0 && $velocityCount == 1))
260: 				#set ($classAttr = "${classAttr} active")
261: 			#end
262: 			<div class="$classAttr" id="gamelog-${v}-${briefCat.key}" role="tabpanel">
263: 				#if ($v == "gamelog")
264: 					#gamelogData($briefCat.key)
265: 				#elseif ($v == "splits")
266: 					#splitsTeamNetworkData($briefCat.key)
267: 				#end
268: 			</div>
269: 		#end  
270: 	</div>
271: #end ## printCategories
272:   
273: #macro (printSeasonGameMinutesTabs $r)
274:     #if ($briefsCategoriesLabels.containsKey("Game"))
275:         #set ($briefsCategoriesGame = $briefsCategoriesLabels.get("Game"))
276:         #set ($gamePos = $briefsCategoriesGame.keySet().iterator().next())
277: 		
278: 		#set ($restrictionLabel = "overall")
279: 		#if ($r == 1)
280: 			#set ($restrictionLabel = "conf")
281: 		#end
282:         	
283: 		#set ($showMinutesTab = false)
284:         #if ($briefsCategoriesLabels.containsKey("Minutes"))
285:             #set ($briefsCategoriesMinutes = $briefsCategoriesLabels.get("Minutes"))
286:             #set ($minutesPos = $briefsCategoriesMinutes.keySet().iterator().next())
287:     		
288:             #if ($lineupMinTeam && $lineupMinTeam.containsKey($minutesPos))
289:                 #set ($lineupMinOverallValues = $lineupMinTeam.get($minutesPos))
290:                 #set ($lineupMinOverallStat = $lineupMinOverallValues[0])
291:                 #set ($lineupMinOverallMinVal = $lineupMinOverallValues[1])
292:                 #set ($lineupMinOverallMinNumericValue = $tool.number.toNumber($lineupMinOverallMinVal))
293:   			
294:                 #if ($splits.overall[$lineupMinOverallStat] && $splits.overall[$lineupMinOverallStat] >= $lineupMinOverallMinNumericValue)
295:                     #set($showMinutesTab = true)
296:                 #end	
297:   		    #end
298: 		#end
299: 		
300: 		<div class="nav nav-pills" role="tablist">
301: 			#printSubTab($pos.equals($gamePos), "${url}?view=lineup&r=${r}&pos=${gamePos}", "Game", "#lineup-${restrictionLabel}-game")
302: 			#printSubTab($pos.equals($firstCategoryPos), "${url}?view=lineup&r=${r}&pos=${firstCategoryPos}", "Season", "#lineup-${restrictionLabel}-season")
303:     		#if ($showMinutesTab)
304:                 #printSubTab($pos.equals($minutesPos), "${url}?view=lineup&r=${r}&pos=${minutesPos}", "Minutes", "#lineup-${restrictionLabel}-minutes")
305:     		#end
306: 		</div>
307: 		<div class="tab-content">
308: 			#printBriefCategories($r)
309: 		</div>
310:     #end
311: #end ## printSeasonGameMinutesTabs
312:   
313: #macro (printLineupTabs)
314: 	#set ($navClass = "nav nav-pills")
315: 	#if ($briefsCategoriesLabels.containsKey("Game"))
316: 		#set ($navClass = "${navClass} float-left mr-3")
317: 	#end
318: 	<div class="$navClass" role="tablist">
319: 		#printSubTab(true, "${url}?view=lineup&r=0&pos=${pos}", "Overall", "#lineup-overall-pane")
320: 		#if ($showConf)
321: 			#printSubTab(false, "${url}?view=lineup&r=1&pos=${pos}", "Conference", "#lineup-conf-pane")
322: 		#end
323: 	</div>
324: 		
325: 	<div class="tab-content">
326: 		<div class="tab-pane active" id="lineup-overall-pane" role="tabpanel">
327: 			#if ($briefsCategoriesLabels.containsKey("Game"))
328: 				#printSeasonGameMinutesTabs(0)
329: 			#else
330: 				#printBriefCategories(0)
331: 			#end
332: 		</div>
333: 		#if ($showConf)
334: 			<div class="tab-pane" id="lineup-conf-pane" role="tabpanel">
335: 				#if ($briefsCategoriesLabels.containsKey("Game"))
336: 					#printSeasonGameMinutesTabs(1)
337: 				#else
338: 					#printBriefCategories(1)
339: 				#end
340: 			</div>
341: 		#end
342: 	</div>
343: #end ## printLineupTabs
344: 
345: #macro (printHighlights)
346:     #if ($highlights)
347:         <div class="d-flex flex-wrap">
348:         #foreach ($highlight in $highlights.keySet())
349:             #set ($value = "-")
350:             #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
351:             #set ($classAttr = "flex-fill p-2 border border-white bg-primary text-white text-center")
352:             <div class="$classAttr">
353:                 <div class="text-uppercase small">$!highlights.get($highlight).replace("per game", "")</div>
354:                 <div class="h5 m-0 font-weight-bold">$!value</div>
355:             </div>
356:         #end
357:         </div>
358:     #end
359: #end ## macro printHighlights
360: #macro (gamelogData $p)
361: 
362:     #set ($gamelogStats = $gamelogs.get($p))
363: 
364:     <table class="table table-hover table-sm">
365:                 <thead class="thead-dark">
366:                         <tr>
367:                                 #printTableHeader("Date", "")
368:                                 #printTableHeader("Opponent", "")
369:                                 #printTableHeader("Score", "")
370:                                 #foreach ($gamelog in $gamelogStats)
371:                                                     #printTableHeader($gamelog, "text-right")
372:                                 #end
373:                         </tr>
374:                 </thead>
375:         #foreach ($event in $events)
376:             <tr>
377:                 <td class="text-nowrap">
378:                     $formatter.formatDate($event.event.date, "MMM d") 
379:                     #if (!$event.event.overall)
380:                         #set ($atLeastOneNotOverall = true) # 
381:                     #end
382:                 </td>
383:                 <td class="text-nowrap">
384: 					#if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
385: 					$event.event.opponent.name
386:                 </td>
387:                 <td class="text-nowrap">
388:                 #if ($event.event.statusCode >= 0)
389:                     #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
390:                         <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
391:                     #else
392:                         ${event.event.APResult}
393:                     #end
394:                 #else &nbsp; 
395:                 #end
396:                 </td>
397:                 #foreach ($gamelog in $gamelogStats.keySet())
398:                     #set ($value = "-")
399:                     #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
400:                     <td class="text-right text-nowrap">$value</td>
401:                 #end
402:             </tr>
403:         #end
404:     </table>
405: #end ## gamelogData
406: 
407: #macro (printRecentGames)
408:     <table class="table table-hover table-sm">
409:             <thead class="thead-dark">
410: 		<tr>
411: 			#printTableHeader("Date", "")
412: 			#printTableHeader("Opponent", "")
413: 			#printTableHeader("Result", "")
414: 		</tr>
415:             </thead>
416: 
417:         #set ($eventEnd = -1)
418:         #foreach ($event in $events)
419:             #if ($event.event.result.resolved)
420:                 #set ($eventEnd = $velocityCount)
421:             #end
422:         #end
423: 
424:         #set ($eventStart = $eventEnd - 5)
425:         #if ($eventStart < 0) #set ($eventStart = 0) #end
426: 
427:         #foreach ($event in $events)
428:             #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
429:                 <tr>
430:                     <td>$formatter.formatDate($event.event.date, "MMM d")</td>
431:                     <td>
432:                         #if ($event.event.neutralSite.length() > 0) vs.
433:                         #elseif (!$event.event.home) at
434:                         #else ## nothing for a home game
435:                         #end
436:                         $event.event.opponent.name
437:                     </td>
438:                     <td>
439:                         #if ($event.event.statusCode >= 0)
440:                             #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
441:                                 <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
442:                             #else
443:                                 ${event.event.APResult}
444:                             #end
445:                         #end
446:                     </td>
447:                 </tr>
448:             #end
449:         #end
450:     </table>
451: #end ## printRecentGames
452: 
453: #macro (splitTeamNetwork $statPosBriefs $label $stats)
454:     <tr>
455:         <th scope="row" class="font-weight-normal">${label}</th>
456:         #foreach ($brief in $statPosBriefs.keySet())
457:             #set ($value = "-")
458:             #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
459:             <td class="text-right text-nowrap">#if ($value.length() > 0) $value #else - #end</td>
460:         #end
461:     </tr>
462: #end ## split
463: 
464: #macro (splitsTeamNetworkData $p)
465: 	#set ($statPosBriefs = $briefs.get($p))
466: 	#set ($colspan = $tool.math.add($statPosBriefs.size(), 1))  
467:     
468: 	#if ($statPosBriefs.size() > 0)
469: 		<table class="table table-hover table-sm">
470:                         <thead class="thead-dark">
471:                                 <tr>
472:                                         <th>&nbsp;</th>
473:                                         #foreach ($brief in $statPosBriefs)
474:                                                 #printTableHeader($brief, "text-right")
475:                                         #end
476:                                 </tr>
477:                         </thead>
478: 			#splitTeamNetwork($statPosBriefs, "Total", $splits.overall)
479: 			#if ($showConf)
480: 				#splitTeamNetwork($statPosBriefs, "Conference", $splits.conference)
481: 				#splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
482: 			#else
483: 				#splitTeamNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
484: 			#end ## hide overall/conf
485: 
486: 			<tr class="bg-transparent">
487: 				<td colspan="$colspan">&nbsp;</td>
488: 			</tr>
489: 
490: 			#splitTeamNetwork($statPosBriefs, "Home", $splits.home)
491: 			#splitTeamNetwork($statPosBriefs, "Away", $splits.away)
492: 			#splitTeamNetwork($statPosBriefs, "Neutral", $splits.neutral)
493: 
494: 			<tr class="bg-transparent">
495: 				<td colspan="$colspan">&nbsp;</td>
496: 			</tr>
497: 
498: 			#foreach($gameResult in $gamesResults.entrySet())
499: 				#if ($gameResult.key == "wins")
500: 					#set ($splitGameResult = $splits.inWins)
501: 				#elseif ($gameResult.key == "losses")
502: 					#set ($splitGameResult = $splits.inLosses)
503: 				#elseif ($gameResult.key == "ties")
504: 					#set ($splitGameResult = $splits.inTies)
505: 				#end
506:     
507: 				#splitTeamNetwork($statPosBriefs, $gameResult.value, $splitGameResult)
508: 			#end
509: 
510: 			<tr class="bg-transparent">
511: 				<td colspan="$colspan">&nbsp;</td>
512: 			</tr>
513: 
514: 			#if ($monthsPlayed and $monthsPlayed.size() > 0)
515: 				#foreach($month in $monthsPlayed)
516: 					#if ($month == 'January')
517: 						#set ($splitMonth = $splits.january)
518: 					#elseif ($month == 'February')
519: 						#set ($splitMonth = $splits.february)
520: 					#elseif ($month == 'March')
521: 						#set($splitMonth = $splits.march)
522: 					#elseif ($month == 'April')
523: 						#set($splitMonth = $splits.april)
524: 					#elseif ($month == 'May')
525: 						#set ($splitMonth = $splits.may)
526: 					#elseif ($month == 'June')
527: 						#set ($splitMonth = $splits.june)
528: 					#elseif ($month == 'July')
529: 						#set($splitMonth = $splits.july)
530: 					#elseif ($month == 'August')
531: 						#set ($splitMonth = $splits.august)
532: 					#elseif ($month == 'September')
533: 						#set($splitMonth = $splits.september)
534: 					#elseif ($month == 'October')
535: 						#set($splitMonth = $splits.october)
536: 					#elseif ($month == 'November')
537: 						#set ($splitMonth = $splits.november)
538: 					#elseif ($month == 'December')
539: 						#set($splitMonth = $splits.december)
540: 					#end
541:   
542: 					#splitTeamNetwork($statPosBriefs, $month, $splitMonth)
543: 				#end ## foreach
544: 			#end
545: 		</table>
546: 	#end
547: #end ## splitsTeamNetworkData
548: 
549: #macro (printAttendance)
550:     #if ($showAttendance)
551:         <table class="table table-hover table-sm">
552:                 <thead class="thead-dark">
553:                 <tr>
554:                                     #printTableHeader("Date", "")
555:                                     #printTableHeader("Opponent", "")
556:                                     #printTableHeader("Score", "")
557:                                     #printTableHeader("Attend", "")
558:                 </tr>
559:                 </thead>
560:             #set ($counter = 0)
561:             #foreach ($event in $events)
562:                 <tr>
563:                     <td class="text-nowrap">$formatter.formatDate($event.event.date, "MMM d")</td>
564:                     <td class="text-nowrap">
565:                         #if ($event.event.neutralSite.length() > 0) vs.
566:                         #elseif (!$event.event.home) at
567:                         #else ## nothing for a home game
568:                         #end
569:                         $event.event.opponent.name
570:                     </td>
571:                     <td class="text-nowrap">
572:                     #if ($event.event.statusCode >= 0)
573:                         #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
574:                             <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
575:                         #else
576:                             ${event.event.result}
577:                         #end
578:                     #else &nbsp; #end
579:                     </td>
580:                     <td class="text-nowrap">
581:                         #set ($value = "-")
582:                         #set ($value = $!formatter.formatNumber($event.stats.get('at'), $formats.get('at')))
583:                         #if ($value.length() > 0) $value #else - #end
584:                     </td>
585:                 </tr>
586:             #end
587:         </table>
588:     #end ## showAttendance
589: #end
590: 
591: #macro (printTab $viewParam $label)
592: 	#set ($classAttr = "nav-link text-nowrap")
593: 	#if ($viewParam == $view)
594: 		#set ($classAttr = "${classAttr} active")
595: 	#end
596: 	<li class="nav-item"><a href="${page.url}?view=${viewParam}" class="$classAttr" role="tab" data-toggle="tab" data-target="#${viewParam}" aria-controls="$viewParam">$label</a></li>
597: #end
598: 
599: #macro (printSubTab $active $url $label $target)
600: 	#set ($classAttr = "btn btn-sm btn-outline-secondary rounded-0")
601: 	#if ($active)
602: 		#set ($classAttr = "${classAttr} active")
603: 	#end
604: 	<button data-url="$url" class="$classAttr" data-toggle="tab" data-target="$target" style="margin-right:-1px">$label</button>
605: #end
606: 
607: #macro (printPaneAttrs $viewParam)
608: 	#set ($classAttr = "tab-pane")
609: 	#if ($viewParam == $view)
610: 		#set ($classAttr = "tab-pane active")
611: 	#else
612: 		#set ($classAttr = "${classAttr} fade")
613: 	#end
614: 	
615: 	class="$classAttr" role="tabpanel" id="$viewParam"
616: #end
617: 
618: #macro (printCoachViewUrl)
619: 	#set ($coachViewUrl = "${page.url}?tmpl=teaminfo-network-monospace-template")
620:     #set ($enumCode = $sport.enumCode)
621:     
622: 	#if ($enumCode == 2)
623:         #set ($coachViewUrl = "${coachViewUrl}&sort=ptspg") 
624:     #elseif ($enumCode == 1 || $enumCode == 11)
625:         #set ($coachViewUrl = "${coachViewUrl}&sort=ab&pos=h")
626:     #end
627:     
628:     #if ($enumCode == 7 || $enumCode == 8 || $enumCode > 11) #else
629:         <li class="nav-item" data-skip="true"><a href="$coachViewUrl" target="_blank" class="nav-link text-nowrap">Coach's View</a></li>
630:     #end
631: #end
632: 
633: #macro (printTabs)
634: 	<div class="tab-nav" style="overflow-x:auto">
635:     	<ul class="nav nav-tabs flex-nowrap" role="tablist">
636:     		#printTab("profile", "Team Profile")
637:     		
638:     		#if ($showRoster)
639:     			#printTab("roster", "Roster")
640:     		#end
641:     		
642:     		#printTab("lineup", "Lineup")
643:     		#printTab("gamelog", "Game Log")
644:     		#printTab("splits", "Split Stats")
645:     		
646:     		#if ($showAttendance)
647:     			#printTab("attendance", "Attendance")
648:     		#end
649:     		
650:             #printCoachViewUrl
651:         </ul>
652: 	</div>
653: #end ## printTabs
654: ############ END MACROS #############
655: 
656: #set ($pageTitle = $page.title)
657: #if ($pageTitle.trim().length() == 0)
658: 	#set ($season = "")
659: 	#if ($page.url.matches(".*/\d{4}-\d{2}/.*"))
660: 		#set ($truncateStr = $page.url.split("/\d{4}-\d{2}/").get(0))
661: 		#set ($season = $page.url.replace($truncateStr, "").substring(1, 8))
662: 	#end
663: 	
664: 	#set ($gender = "")
665: 	#if ($sport.enumCode == 6 or $sport.enumCode == 10)
666: 	#else
667: 		#if ($page.url.matches(".*/sports/m.*") || $page.url.matches(".*/sports/m-*"))
668: 			##set ($gender = "Men's")
669: 		#elseif ($page.url.matches(".*/sports/w.*") || $page.url.matches(".*/sports/w-*"))
670: 			##set ($gender = "Women's")
671: 		#end
672: 	#end
673: 	
674: 	#set ($pageTitle = "${season} ${gender} ${sport} Statistics")
675: 	
676: 	#if ($attributes.get("school_name").length() > 0)
677: 		#set ($pageTitle = "${pageTitle} - ${attributes.get('school_name')}")
678: 	#end
679: #end
680: 
681: $!request.setAttribute("pageTitle", "${pageTitle}")
682: 
683: <head><title>$pageTitle</title></head>
684: 	
685: 
686: <div class="page-content team-stats">
687:     
688:     <h1>$pageTitle</h1>
689: 	
690: 	## TEAM HIGHLIGHT STATS
691: 	<div class="my-3">#printHighlights</div>
692: 
693:     ## TABS
694: 	<div class="tabs-container my-3" data-module="stats/tabs">
695:         #printTabs
696:     
697:         <div class="tab-content p-3 border border-top-0">
698:             
699:             ## TEAM PROFILE
700:             <div #printPaneAttrs("profile")>
701:                 
702:                 <div class="row">
703:                     <div class="col-lg">
704:     					<div class="mb-3">
705: 							<h5>Team Summary</h5>
706: 							<div class="stats-container table-responsive">
707: 								$website.include("${page.sectionPage.sectionPage.url}/schedule?teamId=${teamId}&tmpl=schedule-data-template")
708: 							</div>
709:     					</div>
710:     					<div class="mb-3">
711:     						<h5>Recent Results</h5>
712:     						<div class="stats-container table-responsive">#printRecentGames</div>
713:     					</div>
714:                     </div>
715:                     <div class="col-lg">
716:     					<div class="mb-3">
717: 							<h5>Team Stats</h5>
718: 							<div class="stats-container table-responsive">
719: 								$website.include("${page.sectionPage.url}/teams?tmpl=stats-teams-rank-template&rank=${teamId}")
720: 							</div>
721:     					</div>
722:                     </div>
723:                 </div>
724:             </div> ## team profile
725:     
726:             ## ROSTER
727:             #if ($showRoster)
728:                 <div #printPaneAttrs("roster")>
729: 					$website.includeAgain("../players?teamId=${teamId}&view=roster&tmpl=stats-bios-template")
730:                 </div>
731:             #end
732:     
733:             ## LINEUP
734:             <div #printPaneAttrs("lineup")>
735:                 ## start of overall/conference
736:                 #set ($url = $request.requestURI)
737:     			#printLineupTabs
738:                
739:                 Download roster:
740:                 <a href="../players?teamId=${attributes.teamId}&view=ext">${rosterExtension} (First Last) </a> | 
741:                 <a href="../players?teamId=${attributes.teamId}&view=ext&type=lf"> ${rosterExtension} (Last, First)</a>
742:                 #if ($rosterExtraExtension)
743:                     <a href="../players?teamId=${attributes.teamId}&view=exte">${rosterExtraExtension} (First Last)</a> | 
744:                     <a href="../players?teamId=${attributes.teamId}&view=exte&type=lf">${rosterExtraExtension} (Last, First)</a>
745: 				#end
746:             </div> ## lineup
747:     
748:             ## GAMELOG
749:             <div #printPaneAttrs("gamelog")>
750:             	<div class="stats-container table-responsive">
751: 					#if ($gamelogsCategoriesLabels && $gamelogsCategoriesLabels.size() > 1)
752: 						#printCategories($gamelogsCategoriesLabels, 'gamelog')
753: 					#else
754: 						#gamelogData($pos)
755: 					#end
756:     			</div>
757:             </div>
758:     
759:             ## SPLITS
760:             <div #printPaneAttrs("splits")>
761:     			<div class="stats-container table-responsive">
762: 					#if ($briefsTeamCategoriesLabels && $briefsTeamCategoriesLabels.size() > 1)
763: 						#printCategories($briefsTeamCategoriesLabels, 'splits')
764: 					#else
765: 						#splitsTeamNetworkData($pos)
766: 					#end
767: 				</div>
768:             </div> ## splits
769:     
770:             ## ATTENDANCE
771:             <div #printPaneAttrs("attendance")>
772: 				<div class="stats-container table-responsive">#printAttendance</div>
773:             </div>
774:         </div> ## tab-content
775: 	</div> ## tab-container
776: </div> ## stats-container
777: $wiki.su