Skip to navigation Skip to content Skip to footer

The Official Website of Trine University Athletics

Sat Feb 22
Final
9 Hanover
3 vs. Trine
@ Danville, Ky.
Sat Feb 22
Final
9 Trine
3 at Centre
Sun Feb 23
Final - 7 innings
4 Trine
14 at Centre
Sun Mar 01
Final
3 Trine
0 vs. Union (N.Y.)
@ Lake Myrtle Complex; Auburndale, Fla.
Sun Mar 01
Final
2 Union (N.Y.)
4 vs. Trine
@ Lake Myrtle Complex; Auburndale, Fla.
Mon Mar 02
Final
18 Trine
9 vs. Gwynedd Mercy
@ Pat Thomas Stadium; Leesburg, Fla.
Tue Mar 03
Final
10 Trine
3 vs. Widener
@ Lake Myrtle Complex; Auburndale, Fla.
Wed Mar 04
Final
2 Clark University
4 vs. Trine
@ Pat Thomas Park; Leesburg, Fla.
Thu Mar 05
Final
5 MSOE
7 vs. Trine
@ Lake Myrtle Complex; Auburndale, Fla.
Fri Mar 06
Final - 8 innings
4 Grove City
5 vs. Trine
@ Lake Myrtle Complex; Auburndale, Fla.
Fri Mar 06
Final
8 Trine
1 vs. Grove City
@ Lake Myrtle Complex; Auburndale, Fla.
Fri Mar 13
Cancelled
Trine
at Oberlin
Sun Mar 15
Cancelled
Trine
at Rose-Hulman
Sun Mar 15
Cancelled
Trine
at Rose-Hulman
Tue Mar 17
Cancelled
Trine
at Ohio Northern
Fri Mar 20
Cancelled
Trine
at Franklin
Sat Mar 21
Cancelled
Trine
at Franklin
Tue Mar 24
Cancelled
Manchester
vs. Trine
@ Fort Wayne, Ind.
Sat Mar 28
Cancelled
Trine
at Alma
Sat Mar 28
Cancelled
Trine
at Alma
Sun Mar 29
Cancelled
Alma
vs. Trine
Tue Mar 31
Cancelled
Adrian
vs. Trine
Sat Apr 04
Cancelled
Kalamazoo
vs. Trine
Sat Apr 04
Cancelled
Kalamazoo
vs. Trine
Sun Apr 05
Cancelled
Trine
at Kalamazoo
Wed Apr 08
Cancelled
Trine
at Adrian
Fri Apr 10
Cancelled
Olivet
vs. Trine
Sat Apr 11
Cancelled
Trine
at Olivet
Sat Apr 11
Cancelled
Trine
at Olivet
Tue Apr 14
Cancelled
Adrian
vs. Trine
Sat Apr 18
Cancelled
Albion
vs. Trine
Sat Apr 18
Cancelled
Albion
vs. Trine
Sun Apr 19
Cancelled
Trine
at Albion
Fri Apr 24
Cancelled
Calvin
vs. Trine
Sat Apr 25
Cancelled
Trine
at Calvin
Sat Apr 25
Cancelled
Trine
at Calvin
Thu Apr 30
Cancelled
Hope
vs. Trine
Fri May 01
Cancelled
Trine
at Hope
Fri May 01
Cancelled
Trine
at Hope
Sat Mar 13
Final
0 Trine
3 at Kalamazoo
Kalamazoo Pass List Only
Sat Mar 13
Final
10 Trine
14 at Kalamazoo
Kalamazoo Pass List Only
Sun Mar 14
Final
4 Albion
0 vs. Trine
Sun Mar 14
Final
12 Albion
5 vs. Trine
Fri Mar 19
Final
6 Trine
9 at Olivet
Sat Mar 20
Final
2 Trine
5 at Wabash
Sat Mar 20
Final
9 Trine
11 at Wabash
Sun Mar 21
Final
2 Trine
20 at Wabash
Sun Mar 21
Final - 7 innings
9 Trine
19 at Wabash
Sat Mar 27
Final
1 Trine
2 at Adrian
Sat Mar 27
Final
2 Trine
17 at Adrian
Mon Mar 29
Final
7 Adrian
1 vs. Trine
Game moved to Adrian
Mon Mar 29
Final
21 Adrian
9 vs. Trine
Game moved to Adrian
Fri Apr 02
Cancelled
Trine
at Alma
Fri Apr 02
Cancelled
Trine
at Alma
Sat Apr 03
Cancelled
Alma
vs. Trine
Sat Apr 03
Cancelled
Alma
vs. Trine
Fri Apr 09
Final
5 Trine
3 at Kalamazoo
See Fan Policy
Fri Apr 09
Final
4 Trine
11 at Kalamazoo
See Fan Policy
Mon Apr 12
Final
5 Kalamazoo
9 vs. Trine
Mon Apr 12
Final
7 Kalamazoo
8 vs. Trine
Sat Apr 17
Final
2 Trine
4 at Olivet
Sat Apr 17
Final - 8 innings
4 Trine
5 at Olivet
Sun Apr 18
Final
0 Olivet
14 vs. Trine
Sun Apr 18
Final
2 Olivet
14 vs. Trine
Sat Apr 24
Final
0 Trine
7 at Albion
No Outside Spectators
Sat Apr 24
Final
5 Trine
8 at Albion
No Outside Spectators
Sun Apr 25
Final
1 Albion
14 vs. Trine
Sun Apr 25
Final
6 Albion
1 vs. Trine
Fri Apr 30
Final - 7 innings
3 Trine
4 at Calvin
Approved Spectators Only
Fri Apr 30
Final - 7 innings
4 Trine
5 at Calvin
Approved Spectators Only
Sat May 01
Final
9 Calvin
0 vs. Trine
Sat May 01
Final
2 Calvin
1 vs. Trine
Thu May 06
Final
8 Hope
4 vs. Trine
Fri May 07
Final
4 Trine
6 at Hope
Spectators limited to approved Hope and Trine fans only
Fri May 07
Final
1 Trine
4 at Hope
Wed May 12
Final
2 Trine
4 at Hope
MIAA Tournament
Thu May 13
Final - 11 innings
9 Albion
6 vs. Trine
@ Holland, MI MIAA Tournament
Sat Feb 26
Final
4 Trine
5 at Asbury
Sun Feb 27
Final
1 Trine
5 at Asbury
Sun Feb 27
Final
3 Trine
1 at Asbury
Sun Mar 06
Final - 8 innings
0 John Carroll
1 vs. Trine
@ Lake Myrtle, Fl. (Field 5)
Sun Mar 06
Final
0 Trine
15 vs. John Carroll
@ Lake Myrtle, Fl. (Field 5)
Mon Mar 07
Final
7 Trine
9 vs. Dominican (Ill.)
@ Orlando, Fla.
Tue Mar 08
Final - 7 innings
12 King's (Pa.)
1 vs. Trine
@ Winter Haven, FL
Wed Mar 09
Final - 7 innings
16 Trine
6 vs. Vassar
@ Auburndale,FL
Thu Mar 10
Final
5 Fontbonne
7 vs. Trine
@ Auburndale, Fla. RussMatt Invite
Fri Mar 11
Final
2 Mt. St. Joseph
3 vs. Trine
@ Auburndale, Florida
Fri Mar 11
Final
1 Trine
15 vs. Mt. St. Joseph
@ Auburndale, Florida
Wed Mar 16
Final - 12 innings
10 Trine
11 at Manchester
Fri Mar 18
Cancelled
Trine
at Franklin
Thu Mar 24
Final - 8 innings
2 Trine
12 at Franklin
Played at Grand Park - Westfield, Ind.
Thu Mar 24
Final
5 Trine
11 at Franklin
Played at Grand Park - Westfield, Ind.
Sun Mar 27
Postponed
Manchester
vs. Trine
Tue Mar 29
Final
11 Trine
12 at Ohio Northern
Sat Apr 02
Final
0 Olivet
3 vs. Trine
Sat Apr 02
Final - 7 innings
3 Olivet
13 vs. Trine
Sun Apr 03
Final
4 Trine
2 at Olivet
Tue Apr 05
Final
5 Trine
9 at Adrian
Sun Apr 10
Final
5 Kalamazoo
2 vs. Trine
Originally Scheduled for 4/9
Sun Apr 10
Final - 8 innings
18 Kalamazoo
5 vs. Trine
Originally Scheduled for 4/9
Mon Apr 11
Final
7 Trine
5 at Kalamazoo
Originally Scheduled for 4/10
Wed Apr 13
Final
11 Trine
5 at Adrian
Fri Apr 15
Final
8 Alma
5 vs. Trine
Sat Apr 16
Final
6 Trine
9 at Alma
Sat Apr 16
Final
6 Trine
10 at Alma
Tue Apr 19
Final
14 Adrian
22 vs. Trine
Sat Apr 23
Final
7 Calvin
3 vs. Trine
Sat Apr 23
Final
2 Calvin
7 vs. Trine
Sun Apr 24
Final
5 Manchester
4 vs. Trine
Originally Scheduled for 3/27
Mon Apr 25
Final - 8 innings
5 Trine
15 at Calvin
Originally Scheduled for 4/26
Wed Apr 27
Cancelled
Trine
at Earlham
Sat Apr 30
Final
4 Trine
8 at Albion
Sat Apr 30
Final - 10 innings
3 Trine
1 at Albion
Sun May 01
Final
3 Albion
10 vs. Trine
Thu May 05
Final
1 Trine
2 at Hope
Sat May 07
Final
12 Hope
3 vs. Trine
Originally Scheduled for 5/6
Sat May 07
Final
11 Hope
2 vs. Trine
Originally Scheduled for 5/6
Sat Feb 25
Final
8 Trine
5 at Anderson (Ind.)
Championship Park (Kokomo, Ind.)
Sat Feb 25
Final
8 Trine
2 at Anderson (Ind.)
Championship Park (Kokomo, Ind.)
Sun Feb 26
Final
7 Trine
4 at Anderson (Ind.)
Championship Park (Kokomo, Ind.)
Sun Mar 05
Final
1 Trine
8 vs. John Carroll
@ Lake Myrtle, Fla. (Field 1) RussMatt Central Florida Invitational
Sun Mar 05
Final
8 John Carroll
3 vs. Trine
@ Lake Myrtle, Fla. (Field 1) RussMatt Central Florida Invitational
Mon Mar 06
Final
3 Trine
1 vs. St. Vincent
@ Lake Myrtle, Fla. (Field 7) RussMatt Central Florida Invitational
Tue Mar 07
Final
11 Grove City
4 vs. Trine
@ Lake Myrtle, Fla. (Field 6) RussMatt Central Florida Invitational
Wed Mar 08
Final
17 Dominican (Ill.)
13 vs. Trine
@ Lake Myrtle, Fla. (Field 8) RussMatt Central Florida Invitational
Thu Mar 09
Final - 10 innings
6 Trine
7 vs. Waynesburg
@ Lake Myrtle, Fla. (Field 3) RussMatt Central Florida Invitational
Fri Mar 10
Final
7 Trine
0 vs. Penn St.-Altoona
@ Sanford Fla. (Historic Sanford Stadium) RussMatt Central Florida Invitational
Fri Mar 10
Final
4 Penn St.-Altoona
7 vs. Trine
@ Sanford Fla. (Historic Sanford Stadium) RussMatt Central Florida Invitational
Sun Mar 19
Final - 10 innings
6 Trine
7 at Franklin
Mon Mar 20
Final - 7 innings
8 Trine
18 at Franklin
*Rescheduled from 3/18
Mon Mar 20
Final - 7 innings
1 Trine
14 at Franklin
*Rescheduled from 3/18
Tue Mar 21
Final - 11 innings
13 Trine
10 at Manchester
Sun Mar 26
Final
2 Wright St.-Lake
5 vs. Trine
Sun Mar 26
Final
2 Wright St.-Lake
3 vs. Trine
Tue Mar 28
Final
5 Ohio Northern
3 vs. Trine
Sun Apr 02
Final
0 Olivet
5 vs. Trine
Sun Apr 02
Final
3 Olivet
7 vs. Trine
*Rescheduled from 4/1
Tue Apr 04
Final - 15 innings
5 Adrian
6 vs. Trine
Fri Apr 07
Final
3 Kalamazoo
7 vs. Trine
Sat Apr 08
Final - 7 innings
3 Trine
14 at Kalamazoo
Sat Apr 08
Final - 7 innings
4 Trine
14 at Kalamazoo
Mon Apr 10
Final
4 Trine
11 at Olivet
*Rescheduled from 4/1
Wed Apr 12
Final
1 Trine
5 at Adrian
Fri Apr 14
Final
7 Alma
2 vs. Trine
*Rescheduled from 4/16
Sat Apr 15
Final - 8 innings
0 Trine
10 at Alma
Sat Apr 15
Final
4 Trine
8 at Alma
Tue Apr 18
Final
10 Adrian
3 vs. Trine
Fri Apr 21
Final
12 Calvin
11 vs. Trine
Sat Apr 22
Final
4 Trine
8 at Calvin
Sat Apr 22
Final
13 Trine
9 at Calvin
Thu Apr 27
Final
2 Albion
0 vs. Trine
*Rescheduled from 4/30
Thu Apr 27
Final
10 Albion
0 vs. Trine
*Rescheduled from 4/30
Sun Apr 30
Final
5 Trine
7 at Albion
*Rescheduled from 4/28
Thu May 04
Final
2 Trine
11 at Hope
Fri May 05
Final
7 Hope
5 vs. Trine
Senior Day
Fri May 05
Final
1 Hope
2 vs. Trine
Senior Day
Sun Feb 25
Final - 7 innings
1 Trine
14 at Anderson (Ind.)
Sun Feb 25
Final
21 Trine
17 at Anderson (Ind.)
*Rescheduled from 2/24
Mon Feb 26
Final
5 Trine
6 at Anderson (Ind.)
*Rescheduled from 2/24
Mon Mar 04
Final
0 St. Vincent
6 vs. Trine
@ RussMatt Invitational (Auburndale, Fla.)
Wed Mar 06
Final - 7 innings
2 North Central (Minn.)
4 vs. Trine
@ RussMatt Invitational (Auburndale, Fla.)
Wed Mar 06
Final - 8 innings
10 Trine
8 vs. North Central (Minn.)
@ RussMatt Invitational (Auburndale, Fla.)
Thu Mar 07
Final
11 St. John Fisher
16 vs. Trine
@ RussMatt Invitational (Auburndale, Fla.)
Fri Mar 08
Final
0 Waynesburg
4 vs. Trine
@ RussMatt Invitational (Auburndale, Fla.)
Fri Mar 08
Final
3 Trine
8 vs. Waynesburg
@ RussMatt Invitational (Auburndale, Fla.)
Sat Mar 09
Final
6 Trine
5 vs. Dominican (Ill.)
@ RussMatt Invitational (Auburndale, Fla.)
Sat Mar 16
Final
7 Trine
12 at Franklin
Sat Mar 16
Final
10 Trine
13 at Franklin
Sun Mar 17
Final
3 Trine
18 at Franklin
Sat Mar 23
Final
5 Wright St.-Lake
10 vs. Trine
Sun Mar 24
Final
1 Trine
5 at Wright St.-Lake
Sun Mar 24
Final
4 Trine
6 at Wright St.-Lake
Mon Mar 25
Final
3 Trine
17 at Ohio Northern
Fri Mar 29
Final
8 Hope
1 vs. Trine
Fri Mar 29
Final
6 Hope
5 vs. Trine
*Rescheduled from 3/30
Mon Apr 01
Final - 7 innings
0 Trine
10 at Hope
*Rescheduled from 3/30
Wed Apr 03
Final - 7 innings
1 Trine
11 at Adrian
*Rescheduled from 4/2
Fri Apr 05
Final
4 Albion
2 vs. Trine
Sat Apr 06
Final - 7 innings
0 Trine
10 at Albion
Sat Apr 06
Final
1 Trine
7 at Albion
Tue Apr 09
Final - 7 innings
14 Adrian
3 vs. Trine
*Rescheduled from 4/10
Sat Apr 13
Final - 10 innings
7 Calvin
8 vs. Trine
Sat Apr 13
Final
6 Calvin
5 vs. Trine
Mon Apr 15
Final
8 Trine
7 at Calvin
*Rescheduled from 4/12
Tue Apr 16
Final
21 Adrian
4 vs. Trine
Fri Apr 19
Final - 7 innings
15 (RV) Kalamazoo
2 vs. Trine
Sun Apr 21
Final
1 Trine
2 at (RV) Kalamazoo
*Rescheduled from 4/20
Sun Apr 21
Final
5 Trine
9 at (RV) Kalamazoo
*Rescheduled from 4/20
Fri Apr 26
Final
4 Trine
5 at Alma
Sat Apr 27
Final - 7 innings
20 Alma
5 vs. Trine
Sat Apr 27
Final
9 Alma
2 vs. Trine
Fri May 03
Final
2 Trine
4 at Olivet
Sun May 05
Final - 12 innings
4 Olivet
0 vs. Trine
Senior Day
Sun May 05
Final - 7 innings
8 Olivet
12 vs. Trine
Senior Day
View Full Schedule

Luke Porter #14 IF/P Trine

gp 33
avg .258
hr -
rbi 16
r 9
sb 4
Recent Games
Apr 26 at Calvin L, 2-0
Apr 26 at Calvin W, 11-7
May 2 Kalamazoo L, 5-3
May 2 Kalamazoo L, 8-3
May 4 at Kalamazoo L, 13-2
May 4 at Kalamazoo W, 5-4
There was a problem with a Velocity script
Page/httpd/prestosports/site-public/WEB-INF/themes/generic/bio-network-template
ErrorInvocation of method 'include' 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 105,923 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. at /httpd/prestosports/site-public/WEB-INF/themes/generic/bio-network-template[line 487, column 38]
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: #if($attributes.get("position_stat"))
25:     #set ($pos = $attributes.get("position_stat"))
26: #else
27:     #set ($pos = $attributes.get("position"))
28:     #set ($pos = $statPosition)
29:     #set ($posVec = $pos.split("/"))
30:     #set ($pos = $posVec[0])
31: #end
32: #set ($pos = $pos.toLowerCase())
33: #set ($statPos = $positions.get($pos))
34: #set ($paramPos = $request.getParameter("pos"))
35: 
36: #set ($highlights = $highlights.get($statPos))
37: 
38: #set ($url = ${page.url})
39: #set ($playerId = $attributes.get("playerId"))
40: #set ($stats = $splits.overall)
41: 
42: #set ($hasEvents = $events.size() > 0)
43: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
44: #set ($htmlStatsURL = "${page.url}-stats")
45: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
46: #set ($bioBriefURL = "${page.url}-brief")
47: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
48: 
49: $request.setAttribute("careerTotals", $career)
50: #if(!$rosterTransactions)
51:     ## We track a map of the careers to see if we are missing any seasons
52:     #set ($careerMap = {})
53:     $request.setAttribute("careerMap", $careerMap)
54:     #foreach ($season in $seasons)
55:         ## We need to include this season stats
56:         #set ($pagePathFolders = $page.url.split("/"))
57:         #set ($sportPath = ${pagePathFolders[2]})
58:         #set ($path = "")
59:         #set ($fixedSportPath = "/sports/${sportPath}/${season.seasonPath}")
60:         #if ($pagePathFolders.size() > 6) ## Default path for players page /sports/sportPath/seasonPath/players/playerPageName
61:             #set ($midPath = "/")
62:             ## Use custom path and custom players page name
63:             #foreach ($folder in $pagePathFolders)
64:                 #if ($foreach.index > 3 && $foreach.index < $pagePathFolders.size() - 1)
65:                     #set ($midPath = "${midPath}${folder}/")
66:                 #end
67:             #end
68:             #set ($path = "${fixedSportPath}${midPath}${season.bioPageName}?tmpl=bio-career-template&name=${season.seasonName}&pos=${statPos}&print=no")
69:         #end
70:         #if (!$website.exists($path))
71:             ## Use default path
72:             #set ($path = "${fixedSportPath}/players/${season.bioPageName}?tmpl=bio-career-template&name=${season.seasonName}&pos=${statPos}&print=no")
73:         #end
74:         $website.includeAgain($path)
75:     #end
76: #end
77: 
78: #set ($view = "profile")
79: #if ($request.getParameter("view"))
80:   #set ($view = $request.getParameter("view"))
81: #end
82: 
83: #macro (printResultAriaLabel $event)
84:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
85:     #if ($event.neutralSite.length() > 0 || $event.home)
86:     	#set ($ariaLabel = "${ariaLabel} vs.")
87:     #else
88:     	#set ($ariaLabel = "${ariaLabel} at")
89:     #end
90:     #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
91:     #if ($event.neutralSite.length() > 0)
92:     	#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
93:     #end
94:     #set ($ariaLabel = "${ariaLabel} Box Score")
95:     aria-label="$ariaLabel"
96: #end
97: 
98: #macro (printHighlights)
99: #if ($highlights)
100:   <div class="highlights highlights-standalone accent-bg">
101:     #foreach ($highlight in $highlights.keySet())
102:       #set ($value = "-")
103:       #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
104:       <div class="stat clearfix">
105:         <span class="stat-title">$!highlights.get($highlight)</span>
106:         <span class="stat-value">$value</span>
107:       </div>
108:     #end
109:   </div>
110: #end ## has highlights
111: #end ## macro printHighlights
112: 
113: #macro (splitBioNetwork $statPosBriefs $label $stats)
114:   <tr>
115:     <td class="pinned-col text">${label}</td>
116:      #if($rosterTransactions && $v == "career")
117:         #set($keys =  $stats.names())
118:         #set($array = $keys.toString().replace('"','').split(","))
119:         #foreach ($brief in $statPosBriefs.keySet())
120:             #set ($value = "-")
121:             #if($array.contains($brief))
122:                 #set ($value = $!formatter.formatNumber($tool.math.toDouble($stats.get($brief)), $formats.get($brief)))
123:              #end
124:             <td>#if ($value.length() > 0) $value #else - #end</td>
125:         #end
126:     #else
127:         #foreach ($brief in $statPosBriefs.keySet())
128:           #set ($value = "-")
129:           #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
130:           <td>#if ($value.length() > 0) $value #else - #end</td>
131:         #end
132:     #end
133:   </tr>
134: #end ## marco split
135: 
136: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
137: 
138: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
139: <div class="tab-nav" data-module="jscroll" data-momentum="false">
140: <div>
141: <ul class="clearfix">
142: #foreach($briefCat in $briefCategoryLabels.entrySet())
143:   #set ($briefCatLabel = $briefCat.value)
144:   #set ($briefCatKey = $briefCat.key)
145: 
146:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
147:     #set ($briefCatLabel = "Defence")
148:   #end
149: 
150:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}" role="tab" id="stats-tab-${ariaLabel.toLowerCase().replace(" ", "-")}-${briefCatLabel.toLowerCase()}" aria-label="${ariaLabel}: ${briefCatLabel}">$briefCatLabel</a></li>
151: #end
152: </ul>
153: </div>
154: </div>
155: <div class="tab-panels">
156: #foreach ($briefCat in $briefCategoryLabels.entrySet())
157:   #set ($briefCatLabel = $briefCat.value)
158:   #set ($class = "tab-panel clearfix")
159:   #if ($briefCat.key == $activePos)
160:     #set ($class = "tab-panel active clearfix")
161:   #end
162:   <div class="$class" role="tabpanel" aria-labelledby="stats-tab-${ariaLabel.toLowerCase().replace(" ", "-")}-${briefCatLabel.toLowerCase()}">
163:     <div class="stats-wrap clearfix">
164:     #if ($v == "splits")
165:       #splitsBioNetworkData($briefCat.key)
166:     #elseif ($v == "career")
167:       #careerData($briefCat.key)
168:     #end
169:     </div>
170:   </div>
171: #end
172: </div>
173: </div> ## tab-container
174: 
175: #end ## macro printCategories
176: 
177: #macro (splitsBioNetworkData $p)
178: 
179: #set ($p = $positions.get($p))
180: #set ($statPosBriefs = $briefs.get($p))
181: #set ($colspan = $statPosBriefs.size())
182: 
183: <div class="stats-box full clearfix">
184: <div class="scrollable">
185: <div>
186: <table>
187:   <tr class="accent-bg">
188:     <th class="pinned-col">&nbsp;</th>
189:     #foreach ($brief in $statPosBriefs)
190:       <th>$brief</th>
191:     #end
192:   </tr>
193: 
194: #splitBioNetwork($statPosBriefs, "Total", $splits.overall)
195: #if ($showconf)
196:   #splitBioNetwork($statPosBriefs, "Conference", $splits.conference)
197: #end
198: #splitBioNetwork($statPosBriefs, "Exhibition", $splits.exhibition)
199: 
200: <tr class="empty-row">
201: 	<td class="pinned-col">&nbsp;</td>
202: 	<td colspan="$colspan"><div class="empty-cell">-</div></td>
203: </tr>
204: 
205: #splitBioNetwork($statPosBriefs, "Home", $splits.home)
206: #splitBioNetwork($statPosBriefs, "Away", $splits.away)
207: #splitBioNetwork($statPosBriefs, "Neutral", $splits.neutral)
208: 
209: <tr class="empty-row">
210: 	<td class="pinned-col">&nbsp;</td>
211: 	<td colspan="$colspan"><div class="empty-cell">-</div></td>
212: </tr>
213: 
214: #foreach($gameResult in $gamesResults.entrySet())
215:   #if ($gameResult.key == "wins")
216:     #set ($splitGameResult = $splits.inWins)
217:   #elseif ($gameResult.key == "losses")
218:     #set ($splitGameResult = $splits.inLosses)
219:   #elseif ($gameResult.key == "ties")
220:     #set ($splitGameResult = $splits.inTies)
221:   #end
222: 
223:   #splitBioNetwork($statPosBriefs, $gameResult.value, $splitGameResult)
224: #end
225: 
226: <tr class="empty-row">
227: 	<td class="pinned-col">&nbsp;</td>
228: 	<td colspan="$colspan"><div class="empty-cell">-</div></td>
229: </tr>
230: 
231: #if ($monthsPlayed and $monthsPlayed.size() > 0)
232:   #foreach($month in $monthsPlayed)
233:     #if ($month == 'January')
234:       #set ($splitMonth = $splits.january)
235:     #elseif ($month == 'February')
236:       #set ($splitMonth = $splits.february)
237:     #elseif ($month == 'March')
238:       #set($splitMonth = $splits.march)
239:     #elseif ($month == 'April')
240:       #set($splitMonth = $splits.april)
241:     #elseif ($month == 'May')
242:       #set ($splitMonth = $splits.may)
243:     #elseif ($month == 'June')
244:       #set ($splitMonth = $splits.june)
245:     #elseif ($month == 'July')
246:       #set($splitMonth = $splits.july)
247:     #elseif ($month == 'August')
248:       #set ($splitMonth = $splits.august)
249:     #elseif ($month == 'September')
250:       #set($splitMonth = $splits.september)
251:     #elseif ($month == 'October')
252:       #set($splitMonth = $splits.october)
253:     #elseif ($month == 'November')
254:       #set ($splitMonth = $splits.november)
255:     #elseif ($month == 'December')
256:       #set($splitMonth = $splits.december)
257:     #end
258: 
259:     #splitBioNetwork($statPosBriefs, $month, $splitMonth)
260:   #end ## foreach
261: #end
262: </table>
263: </div>
264: </div> ## scrollable
265: </div> ## srollable-table
266: 
267: #end ## macro splitsBioNetworkData
268: 
269: #macro (printRecentGames)
270: <table>
271:     <tr class="thead accent-bg"><th colspan="3" class="text">Recent Games</th></tr>
272: 
273:     #set ($eventEnd = -1)
274:     #foreach ($event in $events)
275:     #if ($event.event.result.resolved)
276:     #set ($eventEnd = $velocityCount)
277:     #end
278:     #end
279: 
280:     #set ($eventStart = $eventEnd - 5)
281:     #if ($eventStart < 0) #set ($eventStart = 0) #end
282: 
283:     #foreach ($event in $events)
284:     #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
285:     <tr>
286:         <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
287:         <td class="text">
288:             #if ($event.event.neutralSite.length() > 0) vs.
289:             #elseif (!$event.event.home) at
290:             #else ## nothing for a home game
291:             #end
292:             $event.event.opponent.name
293:         </td>
294:         <td class="text">
295:             #if ($event.event.statusCode >= 0)
296:             #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
297:                 <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
298:             #else
299:             ${event.event.APResult}
300:             #end
301:             #end
302:         </td>
303:     </tr>
304:     #end ## if
305:     #end
306: </table>
307: #end ## macro printRecentGames
308: 
309: #macro (gamelogData $p)
310: 
311: #set ($p = $positions.get($p))
312: #set ($gamelogs = $gamelogs.get($p))
313: #set ($atLeastOneNotOverall = false)
314: 
315: <div class="stats-box full clearfix">
316:     <div class="scrollable">
317:         <div>
318:             <table>
319:               <tr class="thead accent-bg">
320:                   <th class="text">Date</th>
321:                   <th class="pinned-col text">Opponent</th>
322:                   <th>Score</th>
323: 				  #set ($colspan = 3)
324:                   #if ($p == 'goalie' && ($sport.enumCode == 9 || $sport.enumCode == 3)) ## field hockey: 9   soccer:3
325: 					#set ($colspan = $colspan + 1)
326: 					<th>Dec</th>
327:                   #end
328:                   #foreach ($gamelog in $gamelogs)
329: 					#set ($colspan = $colspan + 1)
330: 					<th>$gamelog</th>
331:                   #end
332:               </tr>
333:               #foreach ($event in $events)
334:               <tr>
335:                   <td class="text">$formatter.formatDate($event.event.date, "MMM d") #if (!$event.event.overall) #set ($atLeastOneNotOverall = true) # #end</</td>
336:                   <td class="pinned-col text">
337:                       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
338:                       $event.event.opponent.name
339:                   </td>
340:                   <td>
341:                       #if ($event.event.statusCode >= 0)
342:                       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
343:                           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
344:                       #else
345:                       ${event.event.APResult}
346:                       #end
347:                       #else &nbsp; #end
348:                   </td>
349:                   #if ($p == 'goalie' && ($sport.enumCode == 9 || $sport.enumCode == 3)) ## field hockey: 9   soccer:3
350:                       #if ($event.stats.get('gow') == 1)
351:                           <td>W</td>
352:                       #elseif ($event.stats.get('gol') == 1)
353:                           <td>L</td>
354:                       #elseif ($event.stats.get('got') == 1)
355:                           <td>T</td>
356:                       #else
357:                           <td>-</td>
358:                       #end
359:                   #end
360:                   #foreach ($gamelog in $gamelogs.keySet())
361:                   #set ($value = "-")
362:                   #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
363:                   <td>$value</td>
364:                   #end
365:               </tr>
366:               #end
367:               #if ($atLeastOneNotOverall)
368:                 <tr><td colspan="$colspan"># Stats don't count towards season totals</td></tr>
369:               #end
370:             </table>
371:         </div>
372:     </div> ## scrollable
373: </div> ## stats-box
374: 
375: #end ## macro gamelogData
376: 
377: #macro (careerData $p)
378: #set ($p = $positions.get($p))
379: #set ($statPosBriefs = $briefs.get($p))
380: 
381: <div class="stats-box full clearfix">
382: <div class="scrollable">
383: <div>
384: <table>
385: <tr class="thead accent-bg">
386:   <th class="pinned-col">&nbsp;</th>
387:   #foreach ($brief in $statPosBriefs)
388:     <th>$brief</th>
389:   #end
390: </tr>
391:  #if($rosterTransactions)
392:   #set ($seasonLength = $career.seasons.length())
393:   #foreach ($index in [0..$tool.math.sub($seasonLength, 1)])
394:       #set($season = $career.seasons[$index])
395:       #if($season.seasonStatsURL != "null")
396:           #set ($label = "<a href='${season.seasonStatsURL}?view=profile'>$season.seasonName.replaceAll('^[^0-9-]*','') - $season.team.teamName</a>")
397:       #else
398:           #set ($label = "$season.seasonName.replaceAll('^[^0-9-]*','') - $season.team.teamName")
399:       #end
400:       #splitBioNetwork($statPosBriefs, $label, $season.player.stats)
401:   #end
402:   #splitBioNetwork($statPosBriefs, "Total", $career.totals)
403: #else
404:     #foreach ($season in $seasons)
405:       #if ($careerMap.get($season.seasonName))
406:         #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
407:         #splitBioNetwork($statPosBriefs, $label, $careerMap[$season.seasonName])
408:       #elseif ($wiki.valid())
409:         <tr>
410:           <td class="pinned-col text">${season.seasonName}</td>
411:           <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
412:         </tr>
413:       #end
414:     #end
415:     #splitBioNetwork($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
416: #end
417: 
418: 
419: </table>
420: </div>
421: </div> ## scrollable
422: </div> ## stats-box
423: 
424: #end ## macro careerData
425: 
426: ################################################## END MACROS  #############################################################
427: 
428: <head>
429: <title>
430:     $!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")
431: </title>
432: </head>
433: 
434: <div class="bio-wrap bio-wrap-network clearfix" data-module="stats/responsive-container">
435: 
436:     #if ($page.title.length() > 0)
437:     <h1>$page.title</h1>
438:     #end
439: 
440:     <h2 class="player-name">
441:         <span>$!attributes.get("first_name") $!attributes.get("last_name")</span>
442:         #if (!$attributes.get("number").empty)<span>#$!attributes.get("number")</span>#end
443:         #if($attributes.get("position_abbr") && !$attributes.get("position_abbr").empty)
444: 			<span>$!attributes.get("position_abbr")</span>
445: 		#elseif ($attributes.get("position"))
446: 			<span>$!attributes.get("position")</span>
447: 		#end
448:         <a href="../teams?id=$!{attributes.get("teamId")}" aria-label="Team Stats - ${attributes.get("team")}">$attributes.get("team")</a>
449:     </h2>
450: 
451:     #printHighlights
452: 
453:     <div class="body clearfix">
454:         <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary">
455:             <div class="tab-nav" data-module="jscroll" data-momentum="false">
456:                 <div>
457:                     <ul class="clearfix">
458:                         <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile" role="tab" id="stats-tab-player-profile">Player Profile</a></li>
459:                         <li #if ($view == "gamelog")class="active"#end><a href="${page.url}?view=gamelog" role="tab" id="stats-tab-game-log">Game Log</a></li>
460:                         #if ($showCareer)
461:                         <li #if ($view == "career")class="active"#end><a href="${page.url}?view=career" role="tab" id="stats-tab-career-stats">Career Stats</a></li>
462:                         #end
463:                         <li #if ($view == "splits")class="active"#end><a href="${page.url}?view=splits" role="tab" id="stats-tab-split-stats">Split Stats</a></li>
464:                     </ul>
465:                 </div>
466:             </div> ## tab-nav
467: 
468:             <div class="tab-panels clearfix">
469: 
470:                 ## PROFILE
471:                 #set ($class = "tab-panel clearfix")
472:                 #if ($view == "profile")
473:                 #set ($class = "tab-panel active clearfix")
474:                 #end
475:                 <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-player-profile">
476: 
477:                     ## Player profile
478:                     <div class="clearfix stats-wrap">
479: 
480:                         ## LAST SIX GAMES
481:                         <div class="stats-box half">
482:                             #printRecentGames()
483:                         </div>
484: 
485:                         ## RANKING
486:                         <div class="stats-box half">
487:                             $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
488:                         </div>
489: 
490:                     </div> ## clearfix
491: 
492:                     #if ($hasSynopsis)
493:                     <div class="clearfix">$!synopsis</div>
494:                     #end
495: 
496:                     #if ($hasBioBrief)
497:                     <div class="clearfix">$website.include($htmlStatsURL)</div>
498:                     #end
499: 
500:                     #if ($htmlStatsURL)
501:                     <div class="clearfix">$website.include($bioBriefURL)</div>
502:                     #end
503: 
504:                 </div>
505:                 ## PROFILE
506: 
507:                 ## GAMELOG
508:                 #set ($class = "tab-panel clearfix")
509:                 #if ($view == "gamelog")
510:                 #set ($class = "tab-panel active clearfix")
511:                 #end
512: 
513:                 #set ($activePos = $statPos)
514:                 #if ($view == "gamelog" && $paramPos.length() > 0)
515:                   #if ($positions.get($paramPos).length() > 0)
516:                     #set ($activePos = $positions.get($paramPos))
517:                   #end
518:                 #end
519: 
520:                 <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-game-log">
521: 
522:                     #if ($gamelogsCategoriesLabels)
523:                     <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
524:                         <div class="tab-nav" data-module="jscroll" data-momentum="false">
525:                             <div>
526:                                 <ul class="clearfix">
527:                                     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
528:                                       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
529: 
530:                                   #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
531:                       #set($gamelogsCatLabelVal = "Defence")
532:                     #end
533: 
534:                     <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end>
535:                       <a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" role="tab" id="stats-tab-game-log-${gamelogsCatLabelVal.toLowerCase()}" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a>
536:                     </li>
537:                                     #end
538:                                 </ul>
539:                             </div>
540:                         </div>
541:                         <div class="tab-panels">
542:                 #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
543: 					#set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
544:                 #set ($class = "tab-panel clearfix")
545:                 #if ($gamelogsCatLabel.key == $activePos)
546:                   #set ($class = "tab-panel active clearfix")
547:                 #end
548:                 <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-game-log-${gamelogsCatLabelVal.toLowerCase()}">
549:                   <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
550:                 </div>
551:               #end
552:                         </div>
553:                     </div>
554:                     #else
555:                       <div class="stats-wrap clearfix">#gamelogData($pos)</div>
556:                     #end
557: 
558:                 </div> ## tab-panel
559:                 ## GAMELOG
560: 
561:         ## CAREER
562:         #if ($showCareer)
563: 
564:         #set ($activePos = $statPos)
565:         #if ($view == "career" && $paramPos.length() > 0)
566:           #if ($positions.get($paramPos).length() > 0)
567:           #set ($activePos = $positions.get($paramPos))
568:           #end
569:         #end
570: 
571:         #set ($class = "tab-panel clearfix")
572:         #if ($view == "career")
573:           #set ($class = "tab-panel active clearfix")
574:         #end
575: 
576:         <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-career-stats">
577: 
578:         #if ($briefsCategoriesLabels)
579:           #printCategories($briefsCategoriesLabels "career" "Career Stats")
580:         #else
581:           <div class="stats-wrap clearfix">#careerData($activePos)</div>
582:         #end
583: 
584:         </div> ## tab-panel
585:         #end ## CAREER
586: 
587:         ## SPLITS
588:         #set ($class = "tab-panel clearfix")
589:         #if ($view == "splits")
590:           #set ($class = "tab-panel active clearfix")
591:         #end
592: 
593:         #set ($activePos = $statPos)
594:         #if ($view == "splits" && $paramPos.length() > 0)
595:           #if ($positions.get($paramPos).length() > 0)
596:           #set ($activePos = $positions.get($paramPos))
597:           #end
598:         #end
599: 
600:         <div class="${class}" role="tabpanel" aria-labelledby="stats-tab-split-stats">
601: 
602:         #if ($briefsCategoriesLabels)
603:           #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
604:         #else
605:           <div class="stats-wrap clearfix">#splitsBioNetworkData($pos)</div>
606:         #end
607: 
608:         </div> ## tab-panel
609:         ## SPLITS
610: 
611:             </div> ##tab-panels
612: 
613:         </div> ## tab-container
614:     </div> ## body
615: 
616: 
617: </div> ## bio-wrapper
618: $wiki.su