10 Kyle Boswell
10 Kyle Boswell
Height: 6-2
Weight: 180
Year: Senior
Hometown: Huntington Beach, Calif.
High School: Edison HS
Position: Guard
Honors : 2013 Big West Sixth Man of the Year
Honors: 2013 Honorable Mention All-Big West
gp 30
pts/g 10.4
fg % 42.3
3pt % 42.9
ft % 71.6
reb/g 1.7
a/g 2.6

2013-2014

In his senior season, Boswell has accumulated 221 points, 37 rebounds, and 61 assists in 19 games played…Averaging 11.6 points and 3.2 assists per game…Shooting 44.4% overall, 45.8% from the three-point range, and 73.2% from the free throw line…Tied his career-high of seven three-pointers – out of 11 attempts – while scoring 27 points vs. Utah State…Has at least four assists in 10 different games…Scored in double-figures 13 times… Scored in double-figures 13 times…Has made three or more three-pointers nine times…Leads team in three-pointers made (54).

2012-13
Kyle Boswell had an outstanding junior season for UCSB, averaging 13.0 points and 2.0 rebounds per game...Scored 14.1 points per game in Big West play...Came off the bench in 20 of his 29 appearances and was named The Sixth Man of the Year in the Big West Conference...Also an honorable mention all-league choice...Led the Gauchos with 78 three-point baskets, tied for the third most in a single season in school history...Made a career-high seven three-pointers - in 10 attempts - while scoring 23 points at nationally-ranked San Diego State...Had six threes and 23 points in a win over UC Irvine and five more while scoring a career-high 27 at Hawaii...Had three or more three-pointers 16 times and at least one in 27 of 29 games...Had another 23 point game against Cal Poly...Made 41.9% from three-point range, but over his final 23 games he made 68 out of 152, 44.7%...Scored in double-figures 21 times and had 15 or more 12 times...Had three or more assists six times, including a career-high seven in a win over San Diego Christian...Produced season-high three steals on three occasions...Played more minutes as a junior (890) than he did in his first two seasons combined...Led the team at 30.7 minutes per game.

2011-12
Boswell emerged during his sophomore season as a Gaucho...Boswell played in all 31 games and made four starts...After starting four consecutive games at the end of December and beginning of January, he became UCSB's top scoring threat off the bench the rest of the season...Averaged 7.5 points, 1.5 rebounds and 1.7 assists per game...Led the team in three-point field goal percentage at 43.5% and he was third in three-pointers made with 54...Scored in double-figures nine times, including three straight games to open the season...Made 7-of-10 shots overall and 5-of-8 from three-point territory while scoring a career-high 19 in a win at UC Irvine...The five three-pointers were also a personal best...Boswell had 15 points against Westmont, 14 vs. UC Davis and 12 in wins over Santa Clara, Pacific and UC Davis...The Gauchos were 7-2 when he scored in double-figures...Made at least one three-point basket in 29 of 31 games, including 23 straight at one point...In addition to his career-high five three-pointers against UC Irvine, Boswell drained four at UC Davis...Made three three-pointers four times and two or more 16 times on the season...Dealt a career-high six assists in a win over UC Riverside...Had three or more assists six times...Was one of four players to averaged more than 20 minutes, finishing the campaign with a 21.9 minutes per game average.

2010-11
Boswell battled a leg injury and was limited to 21 games in his first season at UCSB...Started six games in a row at one point prior to getting injured...Averaged 2.5 points per game...Had a season-high 11 points in a win over Cal Baptist...Scored eight points, making all three of his field goal attempts and both of his three-point tries, in a game against Oregon...Also made all three of his field goals in a seven-point effort against Loyola Marymount...In all, Boswell made 11-of-25 three-pointers, 44.0%.

High School
Boswell's senior season at Edison High School in Huntington Beach, Calif., was cut short by a wrist injury...Played in just 15 games in 2009-10...Averaged 23.9 points, 3.0 rebounds, and 1.7 assists per game...Made 45% of his field goals overall, 40% from 3-point range, and 76% from the free throw line...Scored 30 or more points four times...Boswell poured in a season-high 33 against Cajon HS of San Bernardino...Also added 32 against University HS of Irvine...Made four or more 3-point baskets in nine of his 15 games...Had a season-high of five 3-pointers against El Segundo HS and Cajon HS...Edison was 14-1 in his 15 games...Boswell's junior season was also cut short because of injuries, but he averaged 12 points and 1.8 rebounds per game...Scored a career-high 38 points against Farrington HS of Hawaii during his junior season...Tallied 37 points and 14 rebounds in a game against Marina HS during his sophomore season...Averaged 22.7 and 17.8 points as a sophomore and freshman respectively and was named All-Sunset League, All-CIF and All-State both years...Set Edison records for most three-pointers in a game with seven and most points in a season with 636...Also set school standards in career points and career three-pointers...Coached by Rich Boyce.

Personal
Kyle Boswell was born September 6, 1991 in Laguna Hills, Calif....the son of Doug and Colleen Boswell...Graduated Honors with Distinction from Edison HS...Earned an Academic Letter for maintaining a grade point average above 4.0 for at least three semesters...AP Scholar with Honors Award...Golden Key Medallion winner in science...Has an older brother (Cody)...Favorite athlete is Reggie Miller...Favorite sports team is the Los Angeles Lakers...Favorite novel is Holes...Favorite TV shows include Man vs. the Wild, Man vs. Food and Deadliest Catch...Hopes to major in mechanical engineering.

 

Career Statistics

Year gp-gs min/avg fg-fga pct 3fg-3fga pct ft-fta pct off. reb def. reb tot avg pf fo ast to blk stl pts avg
10-11 21-6  232/11.0 17-44  .386  11-25  .440  7-9 .778  0.4  20  10  15  52  2.5 
11-12 31-4 679/21.9  74-158  .468  54-124  .435  32-43  .744  40  47  1.5  52  52  24  19 234  7.5 
12-13 29-9 890/30.7 116-264 .439 78-186 .419 68-90 .756 8 49 57 2.0 54 1 42 41 0 18 378 13.0
13-1428-5
781/27.9
85-200.42569-161
.42957-77.7401
48
49
1.8
39
076
36
011
296
10.6
TOTAL 109-24 2582/23.7 292-666 .438 212-496 .427 164-219 .749 16 146
162 1.5 165 1 180 116 0 54
960
8.9

Recent Games
Feb 22 Cal State Fullerton W, 80-65
Feb 27 at UC Irvine L, 71-60
Mar 1 at UC Davis W, 67-54
Mar 6 Hawaii W, 86-77
Mar 8 at Cal Poly W, 71-55
Mar 13 vs. Cal Poly L, 69-38
Statistics category Overall Conf
Games 30 16
Games started 5 -
Minutes 832 430
Minutes per game 27.7 26.9
FG 90-213 42-105
FG Pct 42.3 40.0
3PT 73-170 31-81
3PT Pct 42.9 38.3
FT 58-81 33-42
FT Pct 71.6 78.6
Off rebounds 1 1
Def rebounds 51 22
Total rebounds 52 23
Rebounds per game 1.7 1.4
Personal fouls 41 21
Disqualifications 0 0
Assists 77 31
Turnovers 38 23
Assist to turnover ratio 2.0 1.3
Steals 12 4
Blocks 0 0
Points 311 148
Points per game 10.4 9.3
Points per 40 min 15.0 13.8
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 3 Cal St. East Bay W, 88-65 1 22 5-8 62.5 3-5 60.0 0-0 - 13
Nov 8 Hawaii Pacific W, 76-50 1 30 3-7 42.9 3-7 42.9 1-3 33.3 10
Nov 12 at UNLV W, 86-65 1 33 5-8 62.5 5-7 71.4 4-5 80.0 19
Nov 16 Utah State L, 71-64 1 33 4-10 40.0 2-6 33.3 1-6 16.7 11
Nov 21 at Colorado L, 76-68 1 31 2-8 25.0 1-6 16.7 0-0 - 5
Nov 29 South Dakota St. W, 83-64 1 29 1-4 25.0 1-3 33.3 0-0 - 3
Dec 3 at UCLA L, 89-76 - 31 5-9 55.6 5-9 55.6 3-3 100.0 18
Dec 6 Cal W, 72-65 - 21 2-6 33.3 2-6 33.3 4-4 100.0 10
Dec 15 at San Diego W, 72-61 - 27 3-8 37.5 3-5 60.0 3-5 60.0 12
Dec 19 vs. Troy W, 57-54 - 28 2-5 40.0 2-4 50.0 3-5 60.0 9
Dec 20 at Utah State L, 77-71 - 34 7-11 63.6 7-11 63.6 6-7 85.7 27
Dec 21 vs. Western Ill. W, 61-55 - 32 2-7 28.6 2-6 33.3 0-0 - 6
Dec 30 at Seattle University W, 86-70 - 27 7-9 77.8 5-6 83.3 0-0 - 19
Jan 4 The Master's College W, 81-52 - 20 5-11 45.5 4-10 40.0 0-0 - 14
Jan 11 Cal Poly L, 72-64 - 34 1-7 14.3 1-5 20.0 2-2 100.0 5
Jan 16 Long Beach State W, 64-51 - 25 3-6 50.0 2-5 40.0 0-0 - 8
Jan 18 at Cal State Northridge W, 79-69 - 28 2-5 40.0 1-4 25.0 9-10 90.0 14
Jan 23 at UC Riverside W, 68-65 - 32 3-7 42.9 3-6 50.0 1-2 50.0 10
Jan 25 at Cal State Fullerton L, 74-72 - 32 3-7 42.9 3-7 42.9 2-2 100.0 11
Jan 30 UC Irvine W, 80-60 - 23 3-7 42.9 2-5 40.0 2-2 100.0 10
Feb 1 UC Davis W, 82-67 - 25 4-6 66.7 3-5 60.0 4-4 100.0 15
Feb 6 at Hawaii W, 75-64 - 28 0-2 0.0 0-2 0.0 2-2 100.0 2
Feb 13 at Long Beach State W, 65-64 - 28 4-10 40.0 3-8 37.5 0-0 - 11
Feb 15 Cal State Northridge L, 80-78 - 32 1-8 12.5 1-6 16.7 1-2 50.0 4
Feb 20 UC Riverside W, 55-54 - 18 0-4 0.0 0-2 0.0 0-0 - 0
Feb 22 Cal State Fullerton W, 80-65 - 18 1-2 50.0 1-2 50.0 3-3 100.0 6
Feb 27 at UC Irvine L, 71-60 - 30 5-11 45.5 4-9 44.4 0-0 - 14
Mar 1 at UC Davis W, 67-54 - 22 2-7 28.6 1-5 20.0 1-2 50.0 6
Mar 6 Hawaii W, 86-77 - 30 5-8 62.5 2-4 50.0 5-8 62.5 17
Mar 8 at Cal Poly W, 71-55 - 25 5-8 62.5 4-6 66.7 1-3 33.3 15
Mar 13 vs. Cal Poly L, 69-38 - 26 0-5 0.0 0-3 0.0 0-1 0.0 0
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 3 Cal St. East Bay W, 88-65 1 22 0 1 1 3 1 3.0 0 0 1 0
Nov 8 Hawaii Pacific W, 76-50 1 30 0 0 0 5 0 - 2 0 2 0
Nov 12 at UNLV W, 86-65 1 33 0 3 3 4 1 4.0 0 0 1 0
Nov 16 Utah State L, 71-64 1 33 0 2 2 3 2 1.5 1 0 1 0
Nov 21 at Colorado L, 76-68 1 31 0 5 5 4 3 1.3 1 0 0 0
Nov 29 South Dakota St. W, 83-64 1 29 0 3 3 5 3 1.7 0 0 2 0
Dec 3 at UCLA L, 89-76 - 31 0 2 2 5 0 - 0 0 4 0
Dec 6 Cal W, 72-65 - 21 0 2 2 3 1 3.0 0 0 2 0
Dec 15 at San Diego W, 72-61 - 27 0 3 3 4 1 4.0 1 0 0 0
Dec 19 vs. Troy W, 57-54 - 28 0 2 2 4 1 4.0 1 0 0 0
Dec 20 at Utah State L, 77-71 - 34 0 1 1 4 0 - 1 0 3 0
Dec 21 vs. Western Ill. W, 61-55 - 32 0 3 3 1 0 - 0 0 1 0
Dec 30 at Seattle University W, 86-70 - 27 0 3 3 4 0 - 1 0 1 0
Jan 4 The Master's College W, 81-52 - 20 0 0 0 0 1 0.0 0 0 2 0
Jan 11 Cal Poly L, 72-64 - 34 0 1 1 1 0 - 0 0 0 0
Jan 16 Long Beach State W, 64-51 - 25 0 2 2 0 2 0.0 0 0 0 0
Jan 18 at Cal State Northridge W, 79-69 - 28 0 1 1 8 3 2.7 0 0 3 0
Jan 23 at UC Riverside W, 68-65 - 32 0 2 2 1 2 0.5 0 0 2 0
Jan 25 at Cal State Fullerton L, 74-72 - 32 0 1 1 3 2 1.5 0 0 0 0
Jan 30 UC Irvine W, 80-60 - 23 0 1 1 2 2 1.0 0 0 3 0
Feb 1 UC Davis W, 82-67 - 25 1 1 2 3 3 1.0 1 0 3 -
Feb 6 at Hawaii W, 75-64 - 28 0 0 0 3 1 3.0 1 0 0 -
Feb 13 at Long Beach State W, 65-64 - 28 0 0 0 1 3 0.3 0 0 1 -
Feb 15 Cal State Northridge L, 80-78 - 32 0 3 3 1 1 1.0 0 0 3 -
Feb 20 UC Riverside W, 55-54 - 18 0 0 0 0 0 - 0 0 3 -
Feb 22 Cal State Fullerton W, 80-65 - 18 0 2 2 2 1 2.0 1 0 1 -
Feb 27 at UC Irvine L, 71-60 - 30 0 0 0 0 0 - 0 0 1 -
Mar 1 at UC Davis W, 67-54 - 22 0 0 0 1 0 - 0 0 1 -
Mar 6 Hawaii W, 86-77 - 30 0 5 5 4 3 1.3 0 0 0 -
Mar 8 at Cal Poly W, 71-55 - 25 0 3 3 1 0 - 1 0 0 -
Mar 13 vs. Cal Poly L, 69-38 - 26 0 0 0 0 2 0.0 0 0 1 -
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2011-12 31 4 21.9 2.4-5.1 46.8 1.7-4.0 43.5 1.0-1.4 74.4 7.5
2012-13 29 9 30.7 4.0-9.1 43.9 2.7-6.4 41.9 2.3-3.1 75.6 13.0
2013-14 30 5 27.7 3.0-7.1 42.3 2.4-5.7 42.9 1.9-2.7 71.6 10.4
Total 90 18 26.7 3.1-7.1 44.1 2.3-5.3 42.7 1.8-2.4 73.8 10.3
  gp gs min fg pct 3pt pct ft pct pts
2011-12 31 4 679 74-158 46.8 54-124 43.5 32-43 74.4 234
2012-13 29 9 890 116-264 43.9 78-186 41.9 68-90 75.6 378
2013-14 30 5 832 90-213 42.3 73-170 42.9 58-81 71.6 311
Total 90 18 2401 280-635 44.1 205-480 42.7 158-214 73.8 923
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2011-12 31 4 21.9 4.4-9.3 46.8 3.2-7.3 43.5 1.9-2.5 74.4 13.8
2012-13 29 9 30.7 5.2-11.9 43.9 3.5-8.4 41.9 3.1-4.0 75.6 17.0
2013-14 30 5 27.7 4.3-10.2 42.3 3.5-8.2 42.9 2.8-3.9 71.6 15.0
Total 90 18 26.7 4.7-10.6 44.1 3.4-8.0 42.7 2.6-3.6 73.8 15.4
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2011-12 31 4 21.9 0.2 1.3 1.5 1.7 0.0 1.7 0.8 2.2 0.6 0.0
2012-13 29 9 30.7 0.3 1.7 2.0 1.9 0.0 1.4 1.4 1.0 0.6 0.0
2013-14 30 5 27.7 0.0 1.7 1.7 1.4 0.0 2.6 1.3 2.0 0.4 0.0
Total 90 18 26.7 0.2 1.6 1.7 1.6 0.0 1.9 1.1 1.7 0.5 0.0
  gp gs min off def reb pf dq ast to a/to stl blk
2011-12 31 4 679 7 40 47 52 0 52 24 2.2 19 0
2012-13 29 9 890 8 49 57 54 1 42 41 1.0 18 0
2013-14 30 5 832 1 51 52 41 0 77 38 2.0 12 0
Total 90 18 2401 16 140 156 147 1 171 103 1.7 49 0
  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2011-12 31 4 21.9 0.4 2.4 2.8 3.1 0.0 3.1 1.4 2.2 1.1 0.0
2012-13 29 9 30.7 0.4 2.2 2.6 2.4 0.0 1.9 1.8 1.0 0.8 0.0
2013-14 30 5 27.7 0.0 2.5 2.5 2.0 0.0 3.7 1.8 2.0 0.6 0.0
Total 90 18 26.7 0.3 2.3 2.6 2.4 0.0 2.8 1.7 1.7 0.8 0.0
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 30 5 27.7 3.0-7.1 42.3 2.4-5.7 42.9 1.9-2.7 71.6 10.4
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too few arguments to macro. Wanted 4 got 3 at bio-template[line 215, column 1]
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: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
8: #set ($bioObject = $page.getDataAsObject())
9: #set ($statsURL = $bioObject.statsURL)
10: 
11: #if ($statsURL.length() > 0)
12:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
13:   ## various settings to get the variables set
14:   #set ($events = $request.getAttribute("bio_events"))
15:   #set ($seasons = $request.getAttribute("bio_seasons"))
16:   #set ($career = $request.getAttribute("bio_career"))
17:   #set ($labels = $request.getAttribute("bio_labels"))
18:   #set ($briefs = $request.getAttribute("bio_briefs"))
19:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
20:   #set ($splits = $request.getAttribute("bio_splits"))
21:   #set ($statPosition = $request.getAttribute("bio_position"))
22:   #set ($positions = $request.getAttribute("bio_positions"))
23:   #set ($playerId = $request.getAttribute("bio_player_id"))
24:   #set ($highlights = $request.getAttribute("bio_highlights"))
25:   #set ($formats = $request.getAttribute("bio_formats"))
26:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
27:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
28:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
29:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
30: #end
31: 
32: #set ($pos = "")
33: #set ($pos = $attributes.get("position"))
34: #set ($pos = $statPosition)
35: #set ($posVec = $pos.split("/"))
36: #set ($pos = $posVec[0])
37: #set ($pos = $pos.toLowerCase())
38: #set ($statPos = $positions.get($pos))
39: #set ($paramPos = $request.getParameter("pos"))
40: 
41: #set ($playerId = $attributes.get("playerId"))
42: #set ($stats = $splits.overall)
43: #set ($highlights = $highlights.get($statPos))
44: 
45: #set ($showHighlights = true)
46: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
47: 	#set ($showHighlights = false)
48: #end
49: 
50: #set ($showCareer = $wiki.valid() && $seasons)
51: #if ("yes" == $options.get("stats_show_career") && $seasons)
52:   #set ($showCareer = true)
53: #end
54: 
55: #set ($hasEvents = $events.size() > 0)
56: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
57: #set ($htmlStatsURL = "${page.url}-stats")
58: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
59: #set ($bioBriefURL = "${page.url}-brief")
60: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
61: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
62: #if ($options.get("bio_hide_roster") == true)
63:   #set ($showRoster = false)
64: #end
65: 
66: #set ($view = "")
67: #if ($hasSynopsis || $hasBioBrief)
68:   #set ($view = "bio")
69: #elseif ($statsURL.length() > 0)
70:   #set ($view = "profile")
71: #elseif ($hasHTMLStats)
72:   #set ($view = "htmlstats")
73: #end
74: 
75: #if ($options.get("bio_default_view").length() > 0)
76:   #set ($checkView = $options.get("bio_default_view"))
77: #end
78: 
79: #if ($request.getParameter("view"))
80:   #set ($checkView = $request.getParameter("view"))
81: #end
82: 
83: #if ($checkView == "profile" && $statsURL.length() > 0)
84:   #set ($view = "profile")
85: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
86:   #set ($view = "bio")
87: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
88:   #set ($view = "gamelog")
89: #elseif ($checkView == "career" && $showCareer)
90:   #set ($view = "career")
91: #elseif ($checkView == "splits" && $statsURL.length() > 0)
92:   #set ($view = "splits")
93: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
94:   #set ($view = "htmlstats")
95: #end
96: 
97: #macro (gamelogData $p)
98: 
99: #set ($p = $positions.get($p))
100: #set ($gamelogs = $gamelogs.get($p))
101: 	
102: #if ($hasEvents)
103: <div class="stats-box full clearfix">
104: <div class="scrollable">
105: <div>
106: <table>
107:   <tr class="thead">
108:     <th class="text">Date</th>
109:     <th class="pinned-col text">Opponent</th>
110:     <th>Score</th>
111:     #foreach ($gamelog in $gamelogs)
112:       <th>$gamelog</th>
113:     #end
114:   </tr>
115: #foreach ($event in $events)
116:   <tr>
117:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
118:     <td class="pinned-col text">
119:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
120:       $event.event.opponent.name
121:     </td>
122:     <td>
123:     #if ($event.event.statusCode >= 0)
124:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
125:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
126:       #else
127:       ${event.event.APResult}
128:       #end
129:     #else &nbsp; #end
130:     </td>
131:     #foreach ($gamelog in $gamelogs.keySet())
132:       #set ($value = "-")
133:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
134:       <td>$value</td>
135:     #end
136:   </tr>
137: #end
138: </table>
139: </div>
140: </div> ## scrollable
141: </div> ## stats-box
142: #end
143: 
144: #end ## macro gamelogData
145: 
146: #macro (split $statPosBriefs $label $stats)
147:   <tr>
148:     <td class="pinned-col text">${label}</td>
149:     #foreach ($brief in $statPosBriefs.keySet())
150:       #set ($value = "-")
151:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
152:       <td>#if ($value.length() > 0) $value #else - #end</td>
153:     #end
154:   </tr>
155: #end
156: 
157: #macro (careerData $p)
158: #set ($p = $positions.get($p))
159: #set ($statPosBriefs = $briefs.get($p))
160: 
161: <div class="stats-box full clearfix">
162: <div class="scrollable">
163: <div>
164: <table>
165: <tr class="thead">
166:   <th class="pinned-col">&nbsp;</th>
167:   #foreach ($brief in $statPosBriefs)
168:     <th>$brief</th>
169:   #end
170: </tr>
171: 
172: #set ($careerTotals = $request.getAttribute("careerTotals"))
173: #set ($careerMap = $request.getAttribute("careerMap"))
174: 
175: #foreach ($season in $seasons)
176:   ## Check if we did not get stats for this season
177:   #if ($careerMap.get($season.seasonName))
178:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
179:   #elseif ($wiki.valid())
180:     <tr>
181:       <td class="text">${season.seasonName}</td>
182:       <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
183:     </tr>
184:   #end
185: #end
186: 
187: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
188: 
189: </table>
190: </div>
191: </div> ## scrollable
192: </div> ## stats-box
193: 
194: #end ## macro careerData
195: 
196: #macro (splitsData $p)
197: 
198: #set ($p = $positions.get($p))
199: #set ($statPosBriefs = $briefs.get($p))
200: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))	
201: 	
202: #if ($statPosBriefs.size() > 0)
203: <div class="stats-box full clearfix">
204: <div class="scrollable">
205: <div>
206: <table>
207:   <tr>
208:     <th class="pinned-col">&nbsp;</th>
209:     #foreach ($brief in $statPosBriefs)
210:       <th>$brief</th>
211:     #end
212:   </tr>
213: 
214: #split($statPosBriefs, "Total", $splits.overall)
215: #split($statPosBriefs, "Conference", $splits.conference)
216: #split($statPosBriefs, "Exhibition", $splits.exhibition)
217: 
218: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
219: 
220: #split($statPosBriefs, "Home", $splits.home)
221: #split($statPosBriefs, "Away", $splits.away)
222: #split($statPosBriefs, "Neutral", $splits.neutral)
223: 
224: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
225: 
226: #foreach($gameResult in $gamesResults.entrySet())
227:   #if ($gameResult.key == "wins")
228:     #set ($splitGameResult = $splits.inWins)
229:   #elseif ($gameResult.key == "losses")
230:     #set ($splitGameResult = $splits.inLosses)
231:   #elseif ($gameResult.key == "ties")
232:     #set ($splitGameResult = $splits.inTies)
233:   #end
234: 	
235:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
236: #end
237: 
238: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
239: 
240: #if ($monthsPlayed and $monthsPlayed.size() > 0)
241:   #foreach($month in $monthsPlayed)
242:     #if ($month == 'January')
243:       #set ($splitMonth = $splits.january)
244:     #elseif ($month == 'February')
245:       #set ($splitMonth = $splits.february)
246:     #elseif ($month == 'March')
247:       #set($splitMonth = $splits.march)
248:     #elseif ($month == 'April')
249:       #set($splitMonth = $splits.april)
250:     #elseif ($month == 'May')
251:       #set ($splitMonth = $splits.may)
252:     #elseif ($month == 'June')
253:       #set ($splitMonth = $splits.june)
254:     #elseif ($month == 'July')
255:       #set($splitMonth = $splits.july)
256:     #elseif ($month == 'August')
257:       #set ($splitMonth = $splits.august)
258:     #elseif ($month == 'September')
259:       #set($splitMonth = $splits.september)
260:     #elseif ($month == 'October')
261:       #set($splitMonth = $splits.october)
262:     #elseif ($month == 'November')
263:       #set ($splitMonth = $splits.november)
264:     #elseif ($month == 'December')
265:       #set($splitMonth = $splits.december)
266:     #end
267: 		
268:     #split($statPosBriefs, $month, $splitMonth)
269:   #end ## foreach
270: #end
271: </table>
272: </div>
273: </div> ## scrollable
274: </div> ## srollable-table
275: #end
276: 
277: #end ## macro splitsData
278: 
279: #macro (printRecentGames)
280: #if ($hasEvents)
281: <table>
282:   <tr class="thead"><th colspan="3">Recent Games</th></tr>
283:   
284: #set ($eventEnd = -1)
285: #foreach ($event in $events)
286:   #if ($event.event.result.resolved)
287:     #set ($eventEnd = $velocityCount)
288:   #end
289: #end
290: 
291: #set ($eventStart = $eventEnd - 5)
292: #if ($eventStart < 0) #set ($eventStart = 0) #end
293: 
294: #foreach ($event in $events)
295: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
296:   <tr>
297:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
298:     <td class="text">
299:       #if ($event.event.neutralSite.length() > 0) vs.
300:       #elseif (!$event.event.home) at
301:       #else ## nothing for a home game
302:       #end
303:       $event.event.opponent.name
304:     </td>
305:     <td class="text">
306:     #if ($event.event.statusCode >= 0)
307:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
308:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
309:       #else
310:       ${event.event.APResult}
311:       #end
312: 	#end
313: 	</td>
314:   </tr>
315: #end ## if
316: #end
317: </table>
318: #end
319: #end ## macro printRecentGames
320: 
321: #macro (printCategories $briefCategoryLabels $v)
322: 	
323: <div class="tab-container secondary clearfix">
324: <div class="tab-nav" data-jscroll="true" data-momentum="false">
325: <div>
326: <ul class="clearfix">
327: #foreach($briefCat in $briefCategoryLabels.entrySet())
328:   #set ($briefCatLabel = $briefCat.value)
329:   #set ($briefCatKey = $briefCat.key)
330: 		
331:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
332:     #set ($briefCatLabel = "Defence")
333:   #end	
334: 	
335:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}">$briefCatLabel</a></li>
336: #end
337: </ul>
338: </div>
339: </div>
340: <div class="tab-panels">
341: #foreach ($briefCat in $briefCategoryLabels.entrySet())
342:   #set ($class = "tab-panel clearfix")
343:   #if ($briefCat.key == $activePos)
344:     #set ($class = "tab-panel active clearfix")
345:   #end
346:   <div class="$class">
347:     <div class="stats-wrap clearfix">
348:     #if ($v == "splits")
349:       #splitsData($briefCat.key)
350:     #elseif ($v == "career")
351:       #careerData($briefCat.key)
352:     #end
353:     </div>
354:   </div>
355: #end	
356: </div>
357: </div> ## tab-container
358: 
359: #end ## macro printCategories
360: 	
361: #macro (printHeadshot)
362: 
363: #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
364: 
365: #if ($headshot.url)
366:   <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
367: #else
368:   #if ($website.exists("/images/setup/headshot_default.jpg"))
369:     <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
370:   #else
371:     <img src="/info/images/default_headshot.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
372:   #end
373: #end
374: #end ## macro printHeadshot
375: 	
376: #macro (printBioInfo)
377: <div class="player-name">
378:   #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
379:   <span class="name">$fullName</span>
380: </div>	
381: 	
382: <table>
383: #foreach ($i in [1..10])
384:   #set ($stickyKey = "bio_custom${i}_sticky")
385:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
386:     <tr>
387:       <td class="label">$options.get($stickyKey): </td>
388:       <td class="value">$!attributes.get("custom${i}")</td>
389:     </tr>
390:   #end
391: #end
392: 
393: #foreach ($field in $fields)
394:   #if (!$field.key.startsWith("custom"))
395:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
396:       #if ($field.key == "phone1" || $field.key == "phone2")
397:         <tr>
398:           <td class="label">Phone: </td>
399:           <td class="value">$!attributes.get($field.key)</td>
400:         </tr>
401:       #elseif ($field.key == "email_address")
402:         #set ($emailAdd = $attributes.get($field.key))
403:         <tr>
404:           <td class="label">Email: </td>
405:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
406:         </tr>
407:       #else
408:         <tr>
409:           <td class="label">$field.value: </td>
410:           <td class="value">$!attributes.get($field.key)</td>
411:         </tr>
412:       #end
413:     #end
414:   #end
415: #end
416: 
417: #foreach ($i in [1..10])
418:   #set ($customKey = "bio_custom${i}")
419:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
420:     <tr>
421:       <td class="label">$options.get($customKey): </td>
422:       <td class="value">$!attributes.get("custom${i}")</td>
423:     </tr>
424:   #end
425: #end
426: </table>
427: #end ## macro printBioInfo
428: 	
429: #macro (printHighlights)
430: #foreach ($highlight in $highlights.keySet())
431:   #set ($value = "-")
432:   #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
433:   <div class="stat clearfix">
434:     <span class="stat-title">$!highlights.get($highlight)</span>
435:     <span class="stat-value">$value</span>
436:   </div>
437: #end
438: #end ## macro printHighlights
439: 	
440: #macro (printRoster)
441: #if ($page.contentType == "loki/bio")
442:   #set ($headlinesFeaturedSize = 0)
443:   #foreach ($featuredPage in $page.headlinesFeatured)
444:     #if ($featuredPage.contentType == "loki/headlines")
445:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
446:     #end
447:   #end
448:   #if ($headlinesFeaturedSize > 0)
449:     <select class="roster-select-list">
450:       <option selected="selected">Related Bios</option>
451:       #foreach ($featuredPage in $page.headlinesFeatured)
452:         #if ($featuredPage.contentType == "loki/headlines")
453:           $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
454: 		#end
455: 	  #end
456:     </select>
457:   #end
458: #elseif ($page.contentType == "loki/bio-network")
459:   #set ($relatedPlayers = $page.sectionPage.children)
460:   #set ($teamNames = {})
461:   #foreach ($relatedPlayer in $relatedPlayers)
462:     #if ($relatedPlayer.contentType == "loki/bio-network")
463:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
464:       #set ($teamName = $relatedPlayerObj.get("team"))
465:       #if ($teamName.length() > 0)
466:         #if (!$teamNames.containsValue($teamName))
467:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
468:         #end
469:       #end
470:     #end
471:   #end
472: 
473:   <select class="roster-select-list">
474:   #foreach ($i in [1..$teamNames.size()])
475:     #if ($teamNames.size() > 1)
476:       <optgroup label="$teamNames.get($i)">
477:     #end
478: 				
479:     #foreach ($relatedPlayer in $relatedPlayers)
480:       #if ($relatedPlayer.contentType == "loki/bio-network")
481:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
482:         #set ($teamName = $relatedPlayerObj.get("team"))
483:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
484:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
485:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
486:           #if ($page.url == $relatedPlayer.url)
487:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
488:           #else
489:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
490:           #end
491:         #end
492:       #end
493:     #end
494: 				
495:     #if ($teamNames.size() > 1)
496:       </optgroup>
497:     #end
498:   #end
499:   </select>
500: #end
501: #end ## macro printRoster
502: 	
503: ################################################## END MACROS  #############################################################
504: 
505: #if ($attributes.get("full_name").length() > 0)
506:   #set ($fullName = $attributes.get("full_name"))
507: #else
508:   #set ($firstName = $!attributes.get("first_name"))
509:   #set ($lastName = $!attributes.get("last_name"))
510:   #set ($fullName = "${firstName} ${lastName}")
511: #end
512: 
513: ## FULL ROSTER
514: <div class="bio-wrap clearfix">
515: 	
516: ## RELATED BIOS
517: #if ($showRoster)
518:   <div class="related-bios clearfix">#printRoster</div>
519: #end
520:   
521: <div class="head clearfix">
522: <div class="clearfix">
523:     
524: <div class="player-about clearfix">
525:   <div class="player-headshot">#printHeadshot</div>
526:   <div class="player-info">#printBioInfo</div>
527: </div>
528: 
529: #if ($highlights && $showHighlights)
530:   <div class="player-highlights clearfix">#printHighlights</div>
531: #end
532: 
533: </div>
534: </div> ## head
535: 
536: #if ($view.length() > 0)
537: <div class="body clearfix">
538:   
539: <div class="tab-container primary clearfix">
540:   
541: <div class="tab-nav" data-jscroll="true" data-momentum="false">
542:   <div>
543:   <ul class="clearfix">
544:   #if ($hasSynopsis || $hasBioBrief)
545:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
546:   #end
547: 		
548:   #if ($statsURL.length() > 0)
549:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
550:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
551:     #if ($showCareer)
552:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
553:     #end
554:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
555:   #end
556: 
557:   #if ($hasHTMLStats)
558:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
559:   #end
560:   </ul>
561:   </div>
562: </div> ## tab-nav
563: 
564: <div class="tab-panels clearfix">
565: 	
566: ## BIO
567: #if ($hasSynopsis || $hasBioBrief)
568: 
569: #set ($class = "tab-panel clearfix")
570: #if ($view == "bio")
571:   #set ($class = "tab-panel active clearfix")
572: #end
573: <div class="${class}">
574: 
575: <div class="synopsis clearfix">
576: #if ($hasSynopsis)
577:   $synopsis
578: #elseif ($hasBioBrief)
579:   $website.include("$bioBriefURL")
580: #end
581: </div>
582: 
583: </div> ## tab-panel
584: #end 
585: ## BIO
586: 
587: ## STATS
588: #if ($statsURL.length() > 0)
589: 
590: ## PROFILE
591: #set ($class = "tab-panel clearfix")
592: #if ($view == "profile")
593:   #set ($class = "tab-panel active clearfix")
594: #end
595: <div class="${class}">
596: <div class="stats-wrap clearfix">
597: 
598: ## LAST SIX GAMES
599: <div class="stats-box half">
600: #printRecentGames()
601: </div>
602: 
603: ## RANKING
604: <div class="stats-box half">
605: #if ($statPos.length() > 0)
606:   $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
607: #end
608: </div>
609: 
610: </div> ## stats-wrap	
611: </div> ## tab-content
612: ## PROFILE
613: 
614: ## GAMELOG
615: #set ($class = "tab-panel clearfix")
616: #if ($view == "gamelog")
617:   #set ($class = "tab-panel active clearfix")
618: #end
619: 
620: #set ($activePos = $statPos)
621: #if ($view == "gamelog" && $paramPos.length() > 0)
622:   #if ($positions.get($paramPos).length() > 0)
623:     #set ($activePos = $positions.get($paramPos))
624:   #end
625: #end
626: 
627: <div class="${class}">
628: 
629: #if ($gamelogsCategoriesLabels)
630: <div class="tab-container secondary clearfix">
631:   <div class="tab-nav" data-jscroll="true" data-momentum="false">
632:     <div>
633:     <ul class="clearfix">
634:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
635:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
636: 		
637:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
638:         #set($gamelogsCatLabelVal = "Defence")
639:       #end
640: 
641:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
642:     #end
643:     </ul>
644: 	</div>
645:   </div>
646:   <div class="tab-panels">
647:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
648:     #set ($class = "tab-panel clearfix")
649:     #if ($gamelogsCatLabel.key == $activePos)
650:       #set ($class = "tab-panel active clearfix")
651:     #end
652:     <div class="${class}">
653:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
654: 	</div>
655:   #end   
656:   </div>
657: </div>	
658: #else
659:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
660: #end
661: 	
662: </div> ## tab-panel
663: ## GAMELOG
664: 
665: 
666: ## CAREER
667: #if ($showCareer)
668: 
669: #set ($activePos = $statPos)
670: #if ($view == "career" && $paramPos.length() > 0)
671:   #if ($positions.get($paramPos).length() > 0)
672:     #set ($activePos = $positions.get($paramPos))
673:   #end
674: #end
675: 
676: #set ($class = "tab-panel clearfix")
677: #if ($view == "career")
678:   #set ($class = "tab-panel active clearfix")
679: #end
680: 
681: <div class="${class}">
682: 
683: #if ($briefsCategoriesLabels)
684:   #printCategories($briefsCategoriesLabels "career")
685: #else
686:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
687: #end		
688: 
689: </div> ## tab-panel
690: #end
691: ## CAREER
692: 
693: ## SPLITS
694: #set ($class = "tab-panel clearfix")
695: #if ($view == "splits")
696: 	#set ($class = "tab-panel active clearfix")
697: #end
698: 
699: #set ($activePos = $statPos)
700: #if ($view == "splits" && $paramPos.length() > 0)
701:   #if ($positions.get($paramPos).length() > 0)
702:     #set ($activePos = $positions.get($paramPos))
703:   #end
704: #end
705: 
706: <div class="${class}">
707: 
708: #if ($briefsCategoriesLabels)
709:   #printCategories($briefsCategoriesLabels "splits")
710: #else
711:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
712: #end		
713: 
714: </div> ## tab-panel
715: ## SPLITS
716: 
717: #end 
718: ## STATS
719: 
720: ## HTML STATS
721: #if ($hasHTMLStats)
722: 
723: #set ($class = "tab-panel clearfix")
724: #if ($view == "htmlstats")
725:   #set ($class = "tab-panel active clearfix")
726: #end
727: <div class="${class}">
728:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
729: </div>
730: 
731: #end
732: ## HTML STATS
733: 	
734: </div> ## tab-panels
735: </div> ## tab-container
736: </div> ## body
737: #end
738: 
739: $wiki
740: </div> ## ends bio-wrap