#14 Serena Lopez (P/INF) - East Los Angeles

app
29
gs
17
w
8
l
8
sv
1
ip
101.0
era
4.02
k
68
Player Stats
  Overall Conf
Games 32 20
Plate appearances 69 42
At Bats 57 36
Runs 15 10
Hits 9 4
Doubles - -
Triples - -
Home Runs - -
Runs Batted In 3 3
Total bases 9 4
Walks 6 2
Hit by pitch - -
Strikeouts 11 4
Sacrifice Flies - -
Sacrifice Hits 6 4
Hit into double play 1 1
Stolen Bases 2 2
Caught Stealing - -
Batting Average .158 .111
On Base Percentage .238 .158
Slugging Percentage .158 .111
Appearances 29 19
Games started 17 11
Wins 8 3
Losses 8 6
Saves 1 1
Complete Games 3 1
Shutouts - -
Innings Pitched 101.0 58.1
Hits 104 69
Runs 75 49
Earned Runs 58 40
Walks 57 37
Strikeouts 68 35
Strikeouts per Game 4.71 4.20
Doubles Allowed 19 16
Triples Allowed 3 1
Home Runs Allows 4 3
At Bats Against 260 186
Batting Average Against .400 .371
Earned Run Average 4.02 4.80
Wild pitches 3 1
Hit Batters 13 5
Balks - -
Sacrifice Flies Allowed 3 3
Sacrifice Hits Allowed 6 4
Total Chances 67 40
Put Outs 18 7
Assists 41 28
Errors 8 5
Fielding Percentage .881 .875
Double Plays - -
Stolen Bases Allowed 22 14
Runners Caught Stealing 1 1
Runners Caught Stealing Percentage .043 .067
Passed Balls - -
Catcher's Interference - -
Recent Results
Recent Games
Apr 16 Santa Ana W, 4-1
Apr 18 Chaffey W, 5-3
Apr 19 LA Mission W, 3-2
Apr 22 Pasadena City L, 7-5
Apr 23 Rio Hondo W, 7-5
Apr 24 at Mt. San Antonio L, 9-0
Date Opponent Score ab r h 2b 3b hr rbi bb k sb cs
Jan 30 at Orange Coast L, 10-0 1 0 0 - - - 0 1 1 - -
Feb 1 at Riverside L, 3-1 2 0 0 - - - 0 - - - -
Feb 1 vs. Sacramento City L, 15-5 2 0 0 - - - 0 - - - -
Feb 5 at El Camino   - - - - - - - - - - -
Feb 8 Antelope Valley L, 7-3 3 1 1 - - - 0 1 1 - -
Feb 12 at Long Beach L, 9-1 2 0 0 - - - 0 - - - -
Feb 15 vs. San Bernardino Valley   - - - - - - - - - - -
Feb 16 vs. Grossmont   - - - - - - - - - - -
Feb 19 at Pasadena City L, 5-4 2 3 1 - - - 0 1 - - -
Feb 20 at El Camino L, 8-0 2 0 0 - - - 0 - - - -
Feb 21 at Mt. San Antonio   - - - - - - - - - - -
Feb 26 at Cerritos W, 4-3 3 0 0 - - - 0 - - - -
Feb 28 Chaffey L, 9-6 4 1 0 - - - 0 - - 1 -
Mar 5 at Rio Hondo W, 11-1 3 2 0 - - - 1 - - 1 -
Mar 11 at Mt. San Jacinto W, 9-2 3 1 1 - - - 0 - 1 - -
Mar 12 at LA Harbor L, 6-4 3 2 0 - - - 0 1 - - -
Mar 13 Compton W, 9-1 4 2 1 - - - 2 - - - -
Mar 14 Long Beach W, 6-5 3 0 1 - - - 0 - 1 - -
Mar 19 at Compton W, 10-2 1 0 0 - - - 0 - 1 - -
Mar 23 vs. Hartnell W, 7-0 - - - - - - - - - - -
Mar 23 Moorpark W, 4-3 2 1 0 - - - 0 2 1 - -
Mar 24 Glendale W, 10-2 - - - - - - - - - - -
Mar 24 vs. Victor Valley W, 13-0 - - - - - - - - - - -
Mar 26 Mt. San Antonio L, 11-0 2 0 0 - - - 0 - - - -
Mar 28 Cerritos L, 9-7 - - - - - - - - - - -
Mar 29 at Citrus L, 8-0 3 0 2 - - - 0 - 1 - -
Apr 2 at Chaffey L, 7-0 2 0 0 - - - 0 - 1 - -
Apr 3 LA Harbor W, 5-2 - - - - - - - - - - -
Apr 4 Rio Hondo W, 5-2 3 0 1 - - - 0 - - - -
Apr 5 Oxnard W, 13-5 2 1 0 - - - 0 - - - -
Apr 5 Oxnard W, 7-0 - - - - - - - - - - -
Apr 9 at Pasadena City L, 3-0 0 0 0 - - - 0 - - - -
Apr 10 El Camino L, 5-3 0 0 0 - - - 0 - - - -
Apr 11 at Mt. San Antonio L, 9-0 2 0 0 - - - 0 - 1 - -
Apr 13 Ventura W, 2-1 0 0 0 - - - 0 - - - -
Apr 13 Fullerton L, 8-3 3 1 1 - - - 0 - 2 - -
Apr 16 Santa Ana W, 4-1 0 0 0 - - - 0 - - - -
Apr 18 Chaffey W, 5-3 0 0 0 - - - 0 - - - -
Apr 19 LA Mission W, 3-2 0 0 0 - - - 0 - - - -
Apr 22 Pasadena City L, 7-5 0 0 0 - - - 0 - - - -
Apr 23 Rio Hondo W, 7-5 0 0 0 - - - 0 - - - -
Apr 24 at Mt. San Antonio L, 9-0 0 0 0 - - - 0 - - - -
Date Opponent Score hbp sf sh tb xbh hdp go fo go/fo pa
Jan 30 at Orange Coast L, 10-0 - - - 0 0 - - - - 2
Feb 1 at Riverside L, 3-1 - - - 0 0 - 1 1 1.00 2
Feb 1 vs. Sacramento City L, 15-5 - - - 0 0 - - 2 - 2
Feb 5 at El Camino   - - - - - - - - - -
Feb 8 Antelope Valley L, 7-3 - - - 1 0 - - - - 4
Feb 12 at Long Beach L, 9-1 - - 1 0 0 - 1 2 0.50 3
Feb 15 vs. San Bernardino Valley   - - - - - - - - - -
Feb 16 vs. Grossmont   - - - - - - - - - -
Feb 19 at Pasadena City L, 5-4 - - - 1 0 - 1 - - 3
Feb 20 at El Camino L, 8-0 - - - 0 0 - - 2 - 2
Feb 21 at Mt. San Antonio   - - - - - - - - - -
Feb 26 at Cerritos W, 4-3 - - 1 0 0 - 2 2 1.00 4
Feb 28 Chaffey L, 9-6 - - - 0 0 - - - - 4
Mar 5 at Rio Hondo W, 11-1 - - 1 0 0 1 1 1 1.00 4
Mar 11 at Mt. San Jacinto W, 9-2 - - 1 1 0 - 1 1 1.00 4
Mar 12 at LA Harbor L, 6-4 - - - 0 0 - - 2 - 4
Mar 13 Compton W, 9-1 - - - 1 0 - - - - 4
Mar 14 Long Beach W, 6-5 - - - 1 0 - - - - 3
Mar 19 at Compton W, 10-2 - - 1 0 0 - - - - 2
Mar 23 vs. Hartnell W, 7-0 - - - - - - - - - -
Mar 23 Moorpark W, 4-3 - - - 0 0 - - - - 4
Mar 24 Glendale W, 10-2 - - - - - - - - - -
Mar 24 vs. Victor Valley W, 13-0 - - - - - - - - - -
Mar 26 Mt. San Antonio L, 11-0 - - - 0 0 - - - - 2
Mar 28 Cerritos L, 9-7 - - - - - - - - - -
Mar 29 at Citrus L, 8-0 - - - 2 0 - - - - 3
Apr 2 at Chaffey L, 7-0 - - - 0 0 - - 1 - 2
Apr 3 LA Harbor W, 5-2 - - - - - - - - - -
Apr 4 Rio Hondo W, 5-2 - - - 1 0 - - - - 3
Apr 5 Oxnard W, 13-5 - - - 0 0 - - - - 2
Apr 5 Oxnard W, 7-0 - - - - - - - - - -
Apr 9 at Pasadena City L, 3-0 - - - 0 0 - - - - 0
Apr 10 El Camino L, 5-3 - - - 0 0 - - - - 0
Apr 11 at Mt. San Antonio L, 9-0 - - - 0 0 - 1 - - 2
Apr 13 Ventura W, 2-1 - - 1 0 0 - - - - 1
Apr 13 Fullerton L, 8-3 - - - 1 0 - - - - 3
Apr 16 Santa Ana W, 4-1 - - - 0 0 - - - - 0
Apr 18 Chaffey W, 5-3 - - - 0 0 - - - - 0
Apr 19 LA Mission W, 3-2 - - - 0 0 - - - - 0
Apr 22 Pasadena City L, 7-5 - - - 0 0 - - - - 0
Apr 23 Rio Hondo W, 7-5 - - - 0 0 - - - - 0
Apr 24 at Mt. San Antonio L, 9-0 - - - 0 0 - - - - 0
Date Opponent Score gs w l sv ip h r er era bb k hr
Jan 30 at Orange Coast L, 10-0 0 0 0 0 1.2 4 4 4 16.80 1 2 1
Feb 1 at Riverside L, 3-1 0 0 0 0 2.0 1 1 1 3.50 - 1 -
Feb 1 vs. Sacramento City L, 15-5 1 0 1 0 2.2 4 4 3 7.88 2 1 -
Feb 5 at El Camino   - - - - - - - - - - - -
Feb 8 Antelope Valley L, 7-3 1 0 1 0 7.0 4 7 4 4.00 4 1 -
Feb 12 at Long Beach L, 9-1 1 0 1 0 1.2 3 4 3 12.60 3 1 -
Feb 15 vs. San Bernardino Valley   - - - - - - - - - - - -
Feb 16 vs. Grossmont   - - - - - - - - - - - -
Feb 19 at Pasadena City L, 5-4 1 0 1 0 4.0 5 4 4 7.00 4 1 -
Feb 20 at El Camino L, 8-0 0 0 0 0 2.0 3 2 2 7.00 3 1 -
Feb 21 at Mt. San Antonio   - - - - - - - - - - - -
Feb 26 at Cerritos W, 4-3 1 0 0 0 2.1 4 2 2 6.00 4 1 -
Feb 28 Chaffey L, 9-6 1 0 1 0 3.0 6 6 1 2.33 0 2 -
Mar 5 at Rio Hondo W, 11-1 1 1 0 0 6.0 5 1 1 1.17 0 4 -
Mar 11 at Mt. San Jacinto W, 9-2 1 1 0 0 4.0 5 1 0 0.00 2 5 -
Mar 12 at LA Harbor L, 6-4 0 0 1 0 3.1 5 3 3 6.30 1 4 1
Mar 13 Compton W, 9-1 1 1 0 0 3.0 0 0 0 0.00 0 3 -
Mar 14 Long Beach W, 6-5 0 1 0 0 7.0 8 5 4 4.00 5 1 -
Mar 19 at Compton W, 10-2 0 0 0 0 0.0 - - - 0.00 - - -
Mar 23 vs. Hartnell W, 7-0 - - - - - - - - - - - -
Mar 23 Moorpark W, 4-3 0 1 0 0 4.0 4 2 2 3.50 1 6 -
Mar 24 Glendale W, 10-2 - - - - - - - - - - - -
Mar 24 vs. Victor Valley W, 13-0 - - - - - - - - - - - -
Mar 26 Mt. San Antonio L, 11-0 1 0 1 0 1.1 4 5 5 26.25 3 1 -
Mar 28 Cerritos L, 9-7 - - - - - - - - - - - -
Mar 29 at Citrus L, 8-0 0 0 0 0 1.1 3 3 1 5.25 4 2 -
Apr 2 at Chaffey L, 7-0 1 0 1 0 3.2 3 6 6 11.45 4 1 1
Apr 3 LA Harbor W, 5-2 - - - - - - - - - - - -
Apr 4 Rio Hondo W, 5-2 1 0 0 0 3.0 4 1 1 2.33 1 2 -
Apr 5 Oxnard W, 13-5 0 0 0 0 0.0 - - - 0.00 - - -
Apr 5 Oxnard W, 7-0 - - - - - - - - - - - -
Apr 9 at Pasadena City L, 3-0 0 0 0 0 3.0 - - - 0.00 1 2 -
Apr 10 El Camino L, 5-3 0 0 0 0 2.2 2 1 1 2.63 - 2 -
Apr 11 at Mt. San Antonio L, 9-0 0 0 0 0 1.2 4 3 3 12.60 1 - -
Apr 13 Ventura W, 2-1 1 1 0 0 7.0 2 1 0 0.00 1 4 -
Apr 13 Fullerton L, 8-3 0 0 0 0 0.0 - - - 0.00 - - -
Apr 16 Santa Ana W, 4-1 1 1 0 0 7.0 4 1 1 1.00 2 3 -
Apr 18 Chaffey W, 5-3 1 0 0 0 2.1 5 3 1 3.00 2 2 1
Apr 19 LA Mission W, 3-2 1 1 0 0 6.0 4 2 2 2.33 3 8 -
Apr 22 Pasadena City L, 7-5 1 0 0 0 6.0 7 3 3 3.50 2 2 -
Apr 23 Rio Hondo W, 7-5 0 0 0 1 0.2 - - - 0.00 2 1 -
Apr 24 at Mt. San Antonio L, 9-0 0 0 0 0 1.2 1 - - 0.00 1 4 -
Date Opponent Score tc po a e fpct dp sba rcs rcs% pb ci
Jan 30 at Orange Coast L, 10-0 2 1 0 1 .500 - 1 - - - -
Feb 1 at Riverside L, 3-1 5 2 3 0 1.000 - 2 - - - -
Feb 1 vs. Sacramento City L, 15-5 1 0 0 1 .000 - 1 - - - -
Feb 5 at El Camino   - - - - - - - - - - -
Feb 8 Antelope Valley L, 7-3 2 2 0 0 1.000 - - - - - -
Feb 12 at Long Beach L, 9-1 3 0 1 2 .333 - - - - - -
Feb 15 vs. San Bernardino Valley   - - - - - - - - - - -
Feb 16 vs. Grossmont   - - - - - - - - - - -
Feb 19 at Pasadena City L, 5-4 6 0 6 0 1.000 - 5 1 .167 - -
Feb 20 at El Camino L, 8-0 4 0 3 1 .750 - 2 - - - -
Feb 21 at Mt. San Antonio   - - - - - - - - - - -
Feb 26 at Cerritos W, 4-3 5 3 2 0 1.000 - - - - - -
Feb 28 Chaffey L, 9-6 2 1 1 0 1.000 - - - - - -
Mar 5 at Rio Hondo W, 11-1 3 1 2 0 1.000 - 1 - - - -
Mar 11 at Mt. San Jacinto W, 9-2 2 2 0 0 1.000 - 3 - - - -
Mar 12 at LA Harbor L, 6-4 3 0 2 1 .667 - - - - - -
Mar 13 Compton W, 9-1 1 1 0 0 1.000 - - - - - -
Mar 14 Long Beach W, 6-5 0 0 0 0 - - - - - - -
Mar 19 at Compton W, 10-2 0 0 0 0 - - - - - - -
Mar 23 vs. Hartnell W, 7-0 - - - - - - - - - - -
Mar 23 Moorpark W, 4-3 0 0 0 0 - - - - - - -
Mar 24 Glendale W, 10-2 - - - - - - - - - - -
Mar 24 vs. Victor Valley W, 13-0 - - - - - - - - - - -
Mar 26 Mt. San Antonio L, 11-0 2 0 1 1 .500 - - - - - -
Mar 28 Cerritos L, 9-7 - - - - - - - - - - -
Mar 29 at Citrus L, 8-0 3 2 1 0 1.000 - - - - - -
Apr 2 at Chaffey L, 7-0 1 0 1 0 1.000 - - - - - -
Apr 3 LA Harbor W, 5-2 - - - - - - - - - - -
Apr 4 Rio Hondo W, 5-2 5 1 4 0 1.000 - - - - - -
Apr 5 Oxnard W, 13-5 2 1 1 0 1.000 - - - - - -
Apr 5 Oxnard W, 7-0 - - - - - - - - - - -
Apr 9 at Pasadena City L, 3-0 1 0 1 0 1.000 - - - - - -
Apr 10 El Camino L, 5-3 0 0 0 0 - - 1 - - - -
Apr 11 at Mt. San Antonio L, 9-0 1 0 1 0 1.000 - 3 - - - -
Apr 13 Ventura W, 2-1 4 0 4 0 1.000 - - - - - -
Apr 13 Fullerton L, 8-3 2 0 2 0 1.000 - - - - - -
Apr 16 Santa Ana W, 4-1 3 0 2 1 .667 - - - - - -
Apr 18 Chaffey W, 5-3 0 0 0 0 - - - - - - -
Apr 19 LA Mission W, 3-2 1 1 0 0 1.000 - 1 - - - -
Apr 22 Pasadena City L, 7-5 2 0 2 0 1.000 - 2 - - - -
Apr 23 Rio Hondo W, 7-5 1 0 1 0 1.000 - - - - - -
Apr 24 at Mt. San Antonio L, 9-0 0 0 0 0 - - - - - - -
There was a problem with a Velocity script
Pagebio-network-template
ErrorVM #printCategories: too few arguments to macro. Wanted 3 got 2 at bio-network-template[line 540, column 33]
Page source:
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4: #set ($locale = "en_us")
5: #set ($locale = $options.get("locale"))
6: 
7: #set ($showconf = true)
8: #if ($options.get("stats_hide_conference") and $options.get("stats_hide_conference").equalsIgnoreCase("hide"))
9:     #set ($showconf = false)
10: #end
11: 
12: #set ($showCareer = $wiki.valid() && $seasons)
13: #if ("yes" == $options.get("stats_show_career") && $seasons)
14:     #set ($showCareer = "yes")
15: #end
16: 
17: #if ($locale == "en_us")
18:     #set ($defLabel = "Defense")
19: #elseif ($locale == "en_gb")
20:     #set ($defLabel = "Defence")
21: #end
22: 
23: #set ($pos = "")
24: #set ($pos = $attributes.get("position"))
25: #set ($posVec = $pos.split("/"))
26: #set ($pos = $posVec[0])
27: #set ($pos = $pos.toLowerCase())
28: 
29: #set ($statPos = $positions.get($pos))
30: #set ($paramPos = $request.getParameter("pos").toLowerCase())
31: #set ($highlights = $highlights.get($statPos))
32: 
33: #set ($url = ${page.url})
34: #set ($playerId = $attributes.get("playerId"))
35: #set ($stats = $splits.overall)
36: 
37: #set ($hasEvents = $events.size() > 0)
38: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
39: #set ($htmlStatsURL = "${page.url}-stats")
40: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
41: #set ($bioBriefURL = "${page.url}-brief")
42: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
43: 
44: $request.setAttribute("careerTotals", $career)
45: ## We track a map of the careers to see if we are missing any seasons
46: #set ($careerMap = {})
47: $request.setAttribute("careerMap", $careerMap)
48: #foreach ($season in $seasons)
49:     ## We need to include this season stats
50:     #set ($path = "${season.path}?tmpl=bio-career-template&name=${season.seasonName}&pos=${statPos}&print=no")
51: 	###set ($path = $path.replace("../..", $page.sectionPage.sectionPage.sectionPage.url))
52: 	$website.includeAgain($path)
53: #end
54: 
55: #set ($view = "profile")
56: #if ($request.getParameter("view"))
57:     #set ($view = $request.getParameter("view"))
58: #end
59: 
60: #################################### MACROS ####################################################
61: #macro (printTableHeader $label $class)
62: 	<th class="text-uppercase $class">$label</th>
63: #end
64: 
65: #macro (printCellClass)
66: 	class="text-nowrap"
67: #end
68: 
69: #macro (printTab $viewParam $label)
70: 	#set ($classAttr = "nav-link text-nowrap")
71: 	#if ($viewParam == $view)
72: 		#set ($classAttr = "${classAttr} active")
73: 	#end
74: 	<li class="nav-item">
75: 		<a href="${page.url}?view=${viewParam}" class="$classAttr" role="tab" data-toggle="tab" data-target="#${viewParam}" aria-selected="true" aria-controls="$viewParam">$label</a>
76: 	</li>
77: #end
78: 
79: #macro (printPaneAttrs $viewParam)
80: 	#set ($classAttr = "tab-pane")
81: 	#if ($viewParam == $view)
82: 		#set ($classAttr = "tab-pane active")
83: 	#else
84: 		#set ($classAttr = "${classAttr} fade")
85: 	#end
86: 	
87: 	class="$classAttr" role="tabpanel" id="$viewParam"
88: #end
89: 
90: #macro (printResultAriaLabel $event)
91:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
92:     #if ($event.neutralSite.length() > 0 || $event.home) 
93:     	#set ($ariaLabel = "${ariaLabel} vs.")
94:     #else
95:     	#set ($ariaLabel = "${ariaLabel} at")
96:     #end
97:     #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
98:     #if ($event.neutralSite.length() > 0)
99:     	#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
100:     #end
101:     #set ($ariaLabel = "${ariaLabel} Box Score")
102:     aria-label="$ariaLabel"
103: #end
104: 
105: #macro (printHighlights)
106:     #if ($highlights)
107:         <div class="d-flex flex-wrap mb-3 bg-light">
108:         #foreach ($highlight in $highlights.keySet())
109:             #set ($value = "-")
110:             #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
111:             #set ($classAttr = "flex-fill border p-2 text-center")
112:             #if ($velocityCount > 1)
113:                 ## #set ($classAttr = "nav-item border-left")
114:             #end
115:             <div class="$classAttr" style="min-width:100px">
116:                 <div class="text-uppercase">$!highlights.get($highlight)</div>
117:                 <div class="h5 m-0">$!value</div>
118:             </div>
119:         #end
120: 		</div>
121: 	#end
122: #end ## macro printHighlights
123: 
124: #macro (splitBioNetwork $statPosBriefs $label $stats)
125: 	<tr>
126: 		<td #printCellClass>${label}</td>
127: 		#foreach ($brief in $statPosBriefs.keySet())
128: 			#set ($value = "-")
129: 			#set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
130: 			<td #printCellClass>#if ($value.length() > 0) $value #else - #end</td>
131: 		#end
132: 	</tr>
133: #end ## marco split
134: 
135: #macro (printCategories $briefCategoryLabels $viewParam)
136: 	#printSubTabs($briefCategoryLabels.entrySet(), $viewParam)
137: 	
138: 	<div class="tab-content">
139: 		#foreach ($briefCat in $briefCategoryLabels.entrySet())
140: 			#set ($briefCatLabel = $briefCat.value)
141: 			#set ($class = "tab-pane")
142: 			#if ($briefCat.key == $activePos)
143: 				#set ($class = "tab-pane active")
144: 			#end
145: 			<div id="${viewParam}-${briefCat.key}" class="$class" role="tabpanel">
146: 				<div class="stats-wrap clearfix">
147: 					#if ($viewParam == "splits")
148: 						#splitsBioNetworkData($briefCat.key)
149: 					#elseif ($viewParam == "career")
150: 						#careerData($briefCat.key)
151: 					#end
152: 				</div>
153: 			</div>
154: 		#end  
155: 	</div>
156: #end ## macro printCategories
157: 
158: #macro (splitsBioNetworkData $p)
159: 	#set ($p = $positions.get($p))
160: 	#set ($statPosBriefs = $briefs.get($p))
161: 	#set ($colspan = $statPosBriefs.size() + 1)  
162:   
163: 	<div class="stats-container table-responsive">
164: 		<table class="table table-hover table-sm">
165:                         <thead class="thead-dark">
166:                                 <tr>
167:                                         <td>&nbsp;</td>
168:                                         #foreach ($brief in $statPosBriefs)
169:                                                 #printTableHeader($brief, "")
170:                                         #end
171:                                 </tr>
172:                         </thead>
173: 			#splitBioNetwork($statPosBriefs, "Total", $splits.overall)
174: 			#if ($showconf)
175: 				#splitBioNetwork($statPosBriefs, "Conference", $splits.conference)
176: 			#end
177: 			#splitBioNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
178: 
179: 			<tr>
180: 				<td colspan="$colspan" class="text-center">-</td>
181: 			</tr>
182: 
183: 			#splitBioNetwork($statPosBriefs, "Home", $splits.home)
184: 			#splitBioNetwork($statPosBriefs, "Away", $splits.away)
185: 			#splitBioNetwork($statPosBriefs, "Neutral", $splits.neutral)
186: 
187: 			<tr>
188: 				<td colspan="$colspan" class="text-center">-</td>
189: 			</tr>
190: 
191: 			#foreach($gameResult in $gamesResults.entrySet())
192: 				#if ($gameResult.key == "wins")
193: 					#set ($splitGameResult = $splits.inWins)
194: 				#elseif ($gameResult.key == "losses")
195: 					#set ($splitGameResult = $splits.inLosses)
196: 				#elseif ($gameResult.key == "ties")
197: 					#set ($splitGameResult = $splits.inTies)
198: 				#end
199:   
200: 				#splitBioNetwork($statPosBriefs, $gameResult.value, $splitGameResult)
201: 			#end
202: 
203: 			<tr>
204: 				<td colspan="$colspan" class="text-center">-</td>
205: 			</tr>
206: 
207: 			#if ($monthsPlayed and $monthsPlayed.size() > 0)
208: 				#foreach($month in $monthsPlayed)
209: 					#if ($month == 'January')
210: 						#set ($splitMonth = $splits.january)
211: 					#elseif ($month == 'February')
212: 						#set ($splitMonth = $splits.february)
213: 					#elseif ($month == 'March')
214: 						#set($splitMonth = $splits.march)
215: 					#elseif ($month == 'April')
216: 						#set($splitMonth = $splits.april)
217: 					#elseif ($month == 'May')
218: 						#set ($splitMonth = $splits.may)
219: 					#elseif ($month == 'June')
220: 						#set ($splitMonth = $splits.june)
221: 					#elseif ($month == 'July')
222: 						#set($splitMonth = $splits.july)
223: 					#elseif ($month == 'August')
224: 						#set ($splitMonth = $splits.august)
225: 					#elseif ($month == 'September')
226: 						#set($splitMonth = $splits.september)
227: 					#elseif ($month == 'October')
228: 						#set($splitMonth = $splits.october)
229: 					#elseif ($month == 'November')
230: 						#set ($splitMonth = $splits.november)
231: 					#elseif ($month == 'December')
232: 						#set($splitMonth = $splits.december)
233: 					#end
234: 					#splitBioNetwork($statPosBriefs, $month, $splitMonth)
235: 				#end
236: 			#end
237: 		</table>
238: 	</div>
239: #end ## macro splitsBioNetworkData
240: 
241: #macro (printRecentGames)
242: 	<div class="stats-container table-responsive">
243:     	<table class="table table-hover table-sm">
244:     
245:     		#set ($eventEnd = -1)
246:     		#foreach ($event in $events)
247:     			#if ($event.event.result.resolved)
248:     				#set ($eventEnd = $velocityCount)
249:     			#end
250:     		#end
251:     
252:     		#set ($eventStart = $eventEnd - 5)
253:     		#if ($eventStart < 0) #set ($eventStart = 0) #end
254:     
255:     		#foreach ($event in $events)
256:     			#if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
257:     				<tr>
258:     					<td #printCellClass>$formatter.formatDate($event.event.date, "MMM d")</td>
259:     					<td #printCellClass>
260:     						#if ($event.event.neutralSite.length() > 0) vs.
261:     						#elseif (!$event.event.home) at
262:     						#end
263:     						$event.event.opponent.name
264:     					</td>
265:     					<td #printCellClass>
266:     						#if ($event.event.statusCode >= 0)
267:     							#if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
268:     								<a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
269:     							#else
270:     								${event.event.APResult}
271:     							#end
272:     						#end
273:     					</td>
274:     				</tr>
275:     			#end
276:     		#end
277:     	</table>
278: 	</div>
279: #end ## macro printRecentGames
280: 
281: #macro (gamelogData $p)
282: 	#set ($p = $positions.get($p))
283: 	#set ($gamelogs = $gamelogs.get($p))
284: 	#set ($atLeastOneNotOverall = false)
285: 
286: 	<div class="stats-container table-responsive">
287: 		<table class="table table-hover table-sm">
288:                         <thead class="thead-dark">
289:                                 <tr>
290:                                         #printTableHeader("Date", "")
291:                                         #printTableHeader("Opponent", "")
292:                                         #printTableHeader("Score", "")
293: 
294:                                         #set ($colspan = 3)
295:                                         #if ($p == 'goalie' && ($sport.enumCode == 9 || $sport.enumCode == 3)) ## field hockey: 9   soccer:3
296:                                                 #printTableHeader("Dec", "")
297:                                         #end
298:                                         #foreach ($gamelog in $gamelogs)
299:                                                 #printTableHeader($gamelog, "")
300:                                         #end
301:                                 </tr>
302:                         </thead>
303: 			#foreach ($event in $events)
304: 				<tr>
305: 					<td #printCellClass>$formatter.formatDate($event.event.date, "MMM d") #if (!$event.event.overall) #set ($atLeastOneNotOverall = true) # #end</</td>
306: 					<td #printCellClass>
307: 						#if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
308: 						$event.event.opponent.name
309: 					</td>
310: 					<td #printCellClass>
311: 						#if ($event.event.statusCode >= 0)
312: 							#if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
313: 								<a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
314: 							#else
315: 								${event.event.APResult}
316: 							#end
317: 						#else &nbsp; #end
318: 					</td>
319: 					#if ($p == 'goalie' && ($sport.enumCode == 9 || $sport.enumCode == 3)) ## field hockey: 9   soccer:3
320: 						<td #printCellClass>
321: 						#if ($event.stats.get('gow') == 1)
322: 							W
323: 						#elseif ($event.stats.get('gol') == 1)
324: 							L
325: 						#elseif ($event.stats.get('got') == 1)
326: 							T<
327: 						#else
328: 							-
329: 						#end
330: 						</td>
331: 					#end
332: 					#foreach ($gamelog in $gamelogs.keySet())
333: 						#set ($value = "-")
334: 						#set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
335: 						<td #printCellClass>$value</td>
336: 					#end
337: 				</tr>
338: 			#end
339: 		</table>
340: 		
341: 		#if ($atLeastOneNotOverall)
342: 			<p class="my-3"># Stats don't count towards season totals</p>
343: 		#end
344: 	</div>
345: #end ## macro gamelogData
346: 
347: #macro (careerData $p)
348: 	#set ($p = $positions.get($p))
349: 	#set ($statPosBriefs = $briefs.get($p))
350: 
351: 	<div class="stats-container table-responsive">
352: 		<table class="table table-hover table-sm">
353:                         <thead class="thead-dark">
354:                                 <tr>
355:                                         <td>&nbsp;</td>
356:                                         #foreach ($brief in $statPosBriefs)
357:                                                 #printTableHeader($brief, "")
358:                                         #end
359:                                 </tr>
360:                         </thead>
361: 			#foreach ($season in $seasons)
362: 				#if ($careerMap.get($season.seasonName))
363: 					#set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
364: 					#splitBioNetwork($statPosBriefs, $label, $careerMap[$season.seasonName])
365: 				#elseif ($wiki.valid())
366: 					<tr>
367: 						<td #printCellClass>${season.seasonName}</td>
368: 						<td #printCellClass colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
369: 					</tr>
370: 				#end
371: 			#end
372: 
373: 			#splitBioNetwork($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
374: 		</table>
375: 	</div>
376: #end ## macro careerData
377: 	
378: #macro (printTabs)
379: 	<div class="tab-nav">
380: 		<ul class="nav nav-tabs flex-nowrap" role="tablist">
381: 			#printTab("profile", "Player Profile")
382: 			#printTab("gamelog", "Game Log")
383: 			#if ($showCareer)
384: 				#printTab("career", "Career Stats")
385: 			#end
386: 			#printTab("splits", "Split Stats")
387: 		</ul>
388:     </div>
389: #end ## printTabs
390: 
391: #macro (printLabel $label)
392: 	#if ($locale == "en_gb" && $label == "Defense")
393: 		Defence
394: 	#else
395: 		$label
396: 	#end
397: #end
398: 
399: #macro (printSubTabs $entries $viewParam)
400: 	#set ($activeLabel = "")
401: 	#foreach ($entry in $entries)
402: 		#if ($entry.key == $activePos)
403: 			#set ($activeLabel = $entry.value)
404: 		#end
405: 	#end
406: 	
407: 	<ul class="nav nav-tabs" role="tablist">
408: 		<li class="nav-item dropdown" data-module="bs-scripts/dropdown-tab-state">
409: 			<div class="p-2 dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">#printLabel($activeLabel)</div>
410: 			<div class="dropdown-menu" role="tablist">
411: 			#foreach($entry in $entries)
412: 				<a href="#${viewParam}-${entry.key}" data-url="${page.url}?view=${viewParam}&pos=${entry.key}" class="dropdown-item" role="tab" data-toggle="tab">#printLabel($entry.value)</a>
413: 			#end
414: 			</div>
415: 		</li>
416: 	</ul>
417: #end
418: ################################################## END MACROS  #############################################################
419: 
420: <head>
421: <title>
422:     $!attributes.get("first_name") $!attributes.get("last_name") | #if ($attributes.get("number"))#$!attributes.get("number") | #end #if($attributes.get("position_abbr") && !$attributes.get("position_abbr").empty)$!attributes.get("position_abbr") | #elseif ($attributes.get("position"))$!attributes.get("position") | #end  $attributes.get("team")
423: </title>
424: </head>
425: 
426: <div class="page-content player-stats">
427: 	
428: 	
429: 	<div class="d-flex justify-content-between">
430:     	<h1>
431:             #if (!$attributes.get("number").empty)<span class="small text-muted">#$!attributes.get("number")</span>#end
432:     		$!attributes.get("first_name") $!attributes.get("last_name")
433:             
434:             #if($attributes.get("position_abbr") && !$attributes.get("position_abbr").empty)
435:     			<span class="small">($!attributes.get("position_abbr"))</span> -
436:     		#elseif ($attributes.get("position"))
437:     			<span class="small">($!attributes.get("position"))</span> -
438:     		#end 
439:     		$attributes.get("team")
440:         </h1>
441: 		
442: 		#set ($teamId = $attributes.get("teamId"))
443:     	#if ($teamId.length() > 0)
444:     		<img src="${website.teamLogo($teamId)}" alt="" style="width:48px" />
445:     	#end
446: 	</div>
447: 	
448:     #printHighlights
449: 
450: 	<div class="tabs-container my-3">
451: 		
452: 		#printTabs
453: 		
454:     	<div class="tab-content p-3 border border-top-0">
455:     		
456:     		## PROFILE
457:     		<div #printPaneAttrs("profile")>
458:     			<div class="row">
459:     				<div class="col-lg">
460:     					<h5>Player Stats</h5>
461:     					$website.include("${page.sectionPage.url}/players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
462:     				</div>
463:     				<div class="mt-3 col-lg mt-lg-0">
464:     					<h5>Recent Results</h5>
465:     					#printRecentGames
466:                     </div>
467:     			</div>
468:     
469:                 #if ($hasSynopsis)
470:     				<div class="my-3">$!synopsis</div>
471:                 #end
472:     
473:                 #if ($hasBioBrief)
474:     				<div class="my-3">$website.include($bioBriefURL)</div>
475:                 #end
476:     
477:                 #if ($htmlStatsURL)
478:     				<div class="my-3">$website.include($htmlStatsURL)</div>
479:                 #end
480:     		</div> ## PROFILE
481:     
482:     		## GAMELOG
483:             #set ($activePos = $statPos)
484:             #if ($view == "gamelog" && $paramPos.length() > 0)
485:     			#if ($positions.get($paramPos).length() > 0)
486:     				#set ($activePos = $positions.get($paramPos))
487:     			#end
488:             #end
489:     
490:     		<div #printPaneAttrs("gamelog")>
491:     			#if ($gamelogsCategoriesLabels.size() > 0)
492:     				#printSubTabs($gamelogsCategoriesLabels.entrySet(), "gamelog")
493: 					
494:     				<div class="tab-content">
495:     					#foreach($entry in $gamelogsCategoriesLabels.entrySet())
496:     						#set ($class = "tab-pane")
497:     						#if ($entry.key == $activePos)
498:     							#set ($class = "tab-pane active")
499:     						#end
500:     						<div class="${class}" role="tabpanel" id="gamelog-${entry.key}">
501:     							#gamelogData($entry.key)
502:     						</div>
503:     					#end
504:     				</div>
505:     			#else
506:     				#gamelogData($pos)
507:     			#end
508:     		</div> ## tab-pane
509:     		## GAMELOG
510:     
511:             ## CAREER
512:     		#if ($showCareer)
513:     			#set ($activePos = $statPos)
514:     			#if ($view == "career" && $paramPos.length() > 0)
515:     				#if ($positions.get($paramPos).length() > 0)
516:     					#set ($activePos = $positions.get($paramPos))
517:     				#end
518:     			#end
519:     
520:     			<div #printPaneAttrs("career")>
521:     				#if ($briefsCategoriesLabels)
522:     					#printCategories($briefsCategoriesLabels "career")
523:     				#else
524:     					#careerData($activePos)
525:     				#end    
526:     			</div>
527:     		#end
528:     		## CAREER
529:             
530:             ## SPLITS
531:     		#set ($activePos = $statPos)
532:     		#if ($view == "splits" && $paramPos.length() > 0)
533:     			#if ($positions.get($paramPos).length() > 0)
534:     				#set ($activePos = $positions.get($paramPos))
535:     			#end
536:     		#end
537:     
538:     		<div #printPaneAttrs("splits")>
539:     			#if ($briefsCategoriesLabels)
540:     				#printCategories($briefsCategoriesLabels "splits")
541:     			#else
542:     				#splitsBioNetworkData($pos)
543:     			#end
544:     		</div>
545:     		## SPLITS
546:             
547:     	</div> ## tab-content
548: 	</div> ## tabs-container
549: </div> ## bio-wrapper
550: $wiki.su