1 |
Team
|
LAWRENCE UNIVERSITY (WIS.) |
2 |
There was a problem with a Velocity script |
Page | /httpd/prestosports/site-public/WEB-INF/themes/generic/hkxml-monospace-template |
Error | Invocation of method 'substring' in class java.lang.String threw exception java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at /httpd/prestosports/site-public/WEB-INF/themes/generic/hkxml-monospace-template[line 58, column 11] |
Page source: |
1: ################################################################################
2: ############################ VARIABLES #######################################
3: ################################################################################
4: #set ($homeTeam = $document.selectSingleNode("hkgame/team[@vh='H']"))
5: #set ($homeRecord = $document.valueOf("hkgame/team[@vh='H']/@record"))
6: #set ($home = $document.valueOf("hkgame/team[@vh='H']/@name"))
7: #set ($homeId = $document.valueOf("hkgame/team[@vh='H']/@id"))
8: #set ($visitorTeam = $document.selectSingleNode("hkgame/team[@vh='V']"))
9: #set ($visitorRecord = $document.valueOf("hkgame/team[@vh='V']/@record"))
10: #set ($visitor = $document.valueOf("hkgame/team[@vh='V']/@name"))
11: #set ($visitorId = $document.valueOf("hkgame/team[@vh='V']/@id"))
12: #set ($totalPeriods = $document.selectNodes("hkgame/team[1]/linescore/lineprd").size())
13: #set ($periods = $tool.math.toInteger($document.valueOf("hkgame/status/@period")))
14: #set ($periodRange = [1..$periods])
15:
16: #set ($linkPlayers = $stats.linkPlayers)
17: #set ($linkPlayersBase = $stats.linkPlayersBase)
18: #set ($linkTeams = $stats.linkTeams)
19: #set ($linkTeamsBase = $stats.linkTeamsBase)
20:
21: #set ($location = $document.valueOf("hkgame/venue/@location"))
22: #set ($gameAttendance = $document.valueOf("hkgame/venue/@attend"))
23: #set ($gamePlayedOn = $document.valueOf("hkgame/venue/@date"))
24: #set ($gameStartedAt = $document.valueOf("hkgame/venue/@start"))
25: #set ($gameEndAt = $document.valueOf("hkgame/venue/@end"))
26: #set ($gameDuration = $document.valueOf("hkgame/venue/@duration"))
27: #set ($stadium = $document.valueOf("hkgame/venue/@stadium"))
28: #set ($isNeutralGame = $documnt.valueOf("hkgame/venue/@neutralgame"))
29: #set ($schedNote = $document.valueOf("hkgame/venue/@schednote"))
30: #set ($hasPlayByPlay = $document.selectNodes("hkgame/plays/period").size() > 0)
31:
32: ## NEUTRAL SITE
33: #if ($isNeutralGame.length() > 0 && $isNeutralGame.equals("Y"))
34: #set ($isNeutralGame = true)
35: #else
36: #set ($isNeutralGame = false)
37: #end
38:
39: ################################################################################
40: ############################## MACROS ########################################
41: ################################################################################
42:
43: ## PRINT NAME
44: #macro (printName $name $size)
45: #set ($printVal = $name)
46: #if ($stats.view != "pdf")
47: #if ($name.length() < $size)
48: #set ($dotCount = $tool.math.sub($size, $name.length()))
49: #foreach ($i in [1..$dotCount])
50: #set ($printVal = "${printVal} ")
51: #end
52: #end
53: #end
54: $printVal
55: #end
56:
57: #macro (capitalize $name )
58: $name.substring(0,1).toUpperCase()$name.substring(1).toLowerCase()
59: #end
60:
61: ## PERIOD NUMBER
62: #macro (printPeriodCountCoach $p)
63: #set ($p = $tool.math.toInteger($p))
64: #if ($p == 4) OT
65: #elseif ($p > 4)
66: #set ($ot = $p - 3)
67: ${ot}OT
68: #else $p
69: #end
70: #end
71:
72: #macro (printStatVal $val)
73: #set ($printVal = "")
74: #if ($val.length() > 0)
75: #if ($tool.math.toInteger($val) == 0)
76: #set ($printVal = "0")
77: #else
78: #set ($printVal = $val)
79: #end
80: $printVal
81: #else
82: 0
83: #end
84: #end
85:
86: ## SIMPLE TEAM - PERIOD - TOTAL TABLE
87: #macro (teamPeriodTotalTable $title $attr)
88: <table style=" margin-bottom: 20px">
89: <thead>
90: <tr class="title">
91: #set ($colspan = $totalPeriods + 2)
92: <th colspan="${colspan}" class="align-left">
93: ${title}
94: </th>
95: </tr>
96: <tr>
97: <th class="align-left">Team</th>
98: #foreach ($p in [1..$totalPeriods])
99: <th class="align-left">#printPeriodCountCoach($p)</th>
100: #end
101: <th class="align-left">TOT</th>
102: </tr>
103: </thead>
104: <tbody>
105: <tr class="even">
106: <td class="align-left">${visitorId}</td>
107: #foreach ($p in [1..$totalPeriods])
108: <td class="align-left">
109: $document.valueOf("
110: hkgame/team[@vh='V']/linescore/lineprd[@prd=${p}]/${attr}")
111: </td>
112: #end
113: <td class="align-left">
114: $document.valueOf("hkgame/team[@vh='V']/linescore/${attr}")
115: </td>
116: </tr>
117: <tr class="odd">
118: <td class="align-left">${homeId}</td>
119: #foreach ($p in [1..$totalPeriods])
120: <td class="align-left">
121: $document.valueOf("
122: hkgame/team[@vh='H']/linescore/lineprd[@prd=${p}]/${attr}")
123: </td>
124: #end
125: <td class="align-left">
126: $document.valueOf("hkgame/team[@vh='H']/linescore/${attr}")
127: </td>
128: </tr>
129: </tbody>
130: </table>
131: #end
132:
133: #macro (powerPlayGoalsTable)
134: <table style=" margin-bottom: 20px">
135: <thead>
136: <tr class="title">
137: <th colspan="3" class="align-left">
138: Power Play Goals-Att
139: </th>
140: </tr>
141: <tr>
142: <th class="align-left">Prd</th>
143: <th class="align-center">${visitorId}</th>
144: <th class="align-center">${homeId}</th>
145: </tr>
146: </thead>
147: <tbody>
148: #foreach ($p in [1..$totalPeriods])
149: #if ($velocityCount % 2 == 0)
150: #set ($rowClazz = "even")
151: #else
152: #set ($rowClazz = "odd")
153: #end
154: <tr class="${rowClazz}">
155: <td class="align-left">#printPeriodCountCoach($p)</td>
156: <td class="align-center">
157: #set ($ppg = $document.valueOf("
158: hkgame/team[@vh='V']/linescore/lineprd[@prd=${p}]/@ppg"))
159: #set ($ppatt = $document.valueOf("
160: hkgame/team[@vh='V']/linescore/lineprd[@prd=${p}]/@ppatt"))
161: ${ppg}-$ppatt
162: </td>
163: <td class="align-center">
164: #set ($ppg = $document.valueOf("
165: hkgame/team[@vh='H']/linescore/lineprd[@prd=${p}]/@ppg"))
166: #set ($ppatt = $document.valueOf("
167: hkgame/team[@vh='H']/linescore/lineprd[@prd=${p}]/@ppatt"))
168: ${ppg}-$ppatt
169: </td>
170: </tr>
171: #end
172: <tr class="totals">
173: <td class="align-left">Total</td>
174: <td class="align-center">
175: #set ($ppg = $document.valueOf("hkgame/team[@vh='V']/totals/powerplay/@ppg"))
176: #set ($ppopp = $document.valueOf("hkgame/team[@vh='V']/totals/powerplay/@ppopp"))
177: ${ppg}-$ppopp
178: </td>
179: <td class="align-center">
180: #set ($ppg = $document.valueOf("hkgame/team[@vh='H']/totals/powerplay/@ppg"))
181: #set ($ppopp = $document.valueOf("hkgame/team[@vh='H']/totals/powerplay/@ppopp"))
182: ${ppg}-$ppopp
183: </td>
184: </tr>
185: </tbody>
186: </table>
187: #end
188:
189: #macro (penaltyMinutesTable)
190: <table style=" margin-bottom: 20px">
191: <thead>
192: <tr class="title">
193: <th colspan="3" class="align-left" >
194: Penalties-Minutes by Prd
195: </th>
196: </tr>
197: <tr>
198: <th class="align-left">Prd</th>
199: <th class="align-center">${visitorId}</th>
200: <th class="align-center">${homeId}</th>
201: </tr>
202: </thead>
203: <tbody>
204: #foreach ($p in [1..$totalPeriods])
205: #if ($velocityCount % 2 == 0)
206: #set ($rowClazz = "even")
207: #else
208: #set ($rowClazz = "odd")
209: #end
210: <tr class="${rowClazz}">
211: <td class="align-left">#printPeriodCountCoach($p)</td>
212: <td class="align-center">
213: #set ($pen = $document.valueOf("
214: hkgame/team[@vh='V']/linescore/lineprd[@prd=${p}]/@pen"))
215: #set ($pmin = $document.valueOf("
216: hkgame/team[@vh='V']/linescore/lineprd[@prd=${p}]/@pmin"))
217: ${pen}-$pmin
218: </td>
219: <td class="align-center">
220: #set ($ppg = $document.valueOf("
221: hkgame/team[@vh='H']/linescore/lineprd[@prd=${p}]/@pen"))
222: #set ($ppatt = $document.valueOf("
223: hkgame/team[@vh='H']/linescore/lineprd[@prd=${p}]/@pmin"))
224: ${ppg}-$ppatt
225: </td>
226: </tr>
227: #end
228: <tr class="totals">
229: <td class="align-left">Total</td>
230: <td class="align-center">
231: #set ($count = $document.valueOf("hkgame/team[@vh='V']/totals/penalty/@count"))
232: #set ($minutes = $document.valueOf("hkgame/team[@vh='V']/totals/penalty/@minutes"))
233: ${count}-$minutes
234: </td>
235: <td class="align-center">
236: #set ($count = $document.valueOf("hkgame/team[@vh='H']/totals/penalty/@count"))
237: #set ($minutes = $document.valueOf("hkgame/team[@vh='H']/totals/penalty/@minutes"))
238: ${count}-$minutes
239: </td>
240: </tr>
241: </tbody>
242: </table>
243: #end
244:
245: #macro (teamSummaryTable $style $name $team)
246: <div class="span6" style="${style}">
247: <table>
248: <thead>
249: <tr>
250: <th class="align-left">#</th>
251: <th class="align-left">${name}</th>
252: <th class="align-left">G</th>
253: <th class="align-left">A</th>
254: <th class="align-left">Pim</th>
255: <th class="align-left">Sh</th>
256: <th class="align-left">+/-</th>
257: <th class="align-left">Bl</th>
258: </tr>
259: </thead>
260: <tbody>
261: #foreach ($player in $team.selectNodes("player"))
262: #if ($player.valueOf("@gp") != "0" )
263: #if ($velocityCount % 2 == 0)
264: #set ($rowClazz = "even")
265: #else
266: #set ($rowClazz = "odd")
267: #end
268: <tr class="${rowClazz}">
269: <td class="align-left">$player.valueOf("@uni")</td>
270: <td class="align-left">#printName($player.valueOf("@name"),20)</td>
271: <td class="align-left">#printStatVal($player.valueOf("shots/@g"))</td>
272: <td class="align-left">#printStatVal($player.valueOf("shots/@a"))</td>
273: <td class="align-left">#printStatVal($player.valueOf("penalty/@minutes"))</td>
274: <td class="align-left">#printStatVal($player.valueOf("shots/@sh"))</td>
275: <td class="align-left">#printStatVal($player.valueOf("misc/@plusminus"))</td>
276: <td class="align-left">#printStatVal($player.valueOf("misc/@blk"))</td>
277: </tr>
278: #end
279: #end
280: </tbody>
281: </table>
282: </div>
283: #end
284:
285: #macro (penaltySummaryTable $style $penalties $start $end)
286: <div class="span6" style="${style}">
287: <table>
288: <thead>
289: <tr>
290: <th class="align-left">Prd</th>
291: <th class="align-left">Player</th>
292: <th class="align-left">Team</th>
293: <th class="align-left">Min</th>
294: <th class="align-left">Offense</th>
295: <th class="align-left">Time</th>
296: <th class="align-left"></th>
297: </tr>
298: </thead>
299: <tbody>
300: #foreach ($penalty in $penalties)
301: #if ($velocityCount > $start && $velocityCount <= $end)
302: #set ($pp = "")
303: #if ($penalty.valueOf("@pp") == "Y")
304: #set ($pp = "PP")
305: #end
306: #if ($velocityCount % 2 == 0)
307: #set ($rowClazz = "even")
308: #else
309: #set ($rowClazz = "odd")
310: #end
311: <tr class="${rowClazz}">
312: <td>$penalty.valueOf("@prd")</td>
313: <td>#printName($penalty.valueOf("@name"),20)</td>
314: <td>$penalty.valueOf("@id")</td>
315: <td>$penalty.valueOf("@minutes")</td>
316: <td>
317: #set($description = "#capitalize($penalty.valueOf('@desc'))")
318: #printName($description,15)
319: </td>
320: <td>$penalty.valueOf("@time")</td>
321: <td>$pp</td>
322: </tr>
323: #end
324: #end
325: </tbody>
326: </table>
327: </div>
328: #end
329:
330: #macro (faceoffSummaryTable $style $name $team)
331: <div class="span6" style="${style}">
332: <table>
333: <thead>
334: <tr class="title">
335: <th colspan="4" class="align-left">
336: $name
337: </th>
338: </tr>
339: <tr>
340: <th class="align-left"><span>#</span>#</th>
341: <th class="align-left">Player</th>
342: <th class="align-left">W</th>
343: <th class="align-left">L</th>
344: </tr>
345: </thead>
346: <tbody>
347: #foreach ($player in $team.selectNodes("player"))
348: #set ($facewon = $player.valueOf("misc/@facewon"))
349: #set ($facelost = $player.valueOf("misc/@facelost"))
350: #if ($facewon == "")
351: #set ($facewon = "0")
352: #end
353: #if ($facelost == "")
354: #set ($facelost = "0")
355: #end
356: #if ($facewon != "0" || $facelost != "0")
357: #if ($velocityCount % 2 == 0)
358: #set ($rowClazz = "even")
359: #else
360: #set ($rowClazz = "odd")
361: #end
362: <tr class="${rowClazz}">
363: <td>$player.valueOf("@uni")</td>
364: <td>#printName($player.valueOf("@name"),20)</td>
365: <td>$facewon</td>
366: <td>$facelost</td>
367: </tr>
368: #end
369: #end
370: <tr class="totals">
371: <td></td>
372: <td>Totals</td>
373: <td>$team.valueOf("totals/misc/@facewon")</td>
374: <td>$team.valueOf("totals/misc/@facelost")</td>
375: </tr>
376: </tbody>
377: </table>
378: </div>
379: #end
380:
381: #macro (goaltendersTable $style $name $team)
382: <div class="span6" style="${style}">
383: <table>
384: <thead>
385: <tr>
386: <th class="align-left"><span>#</span>#</th>
387: <th class="align-left">${name}</th>
388: <th class="align-left">Dec</th>
389: <th class="align-left">Min</th>
390: <th class="align-left">GA</th>
391: #foreach ($p in [1..$totalPeriods])
392: <th class="align-left">#printPeriodCountCoach($p)</th>
393: #end
394: <th class="align-left">Saves</th>
395: </tr>
396: </thead>
397: <tbody>
398: #foreach ($goalie in $team.selectNodes("player/goalie"))
399: #if ($goalie.valueOf("@gp") != "0" )
400: #set ($player = $goalie.getParent())
401: #set ($playerName = $player.valueOf("@name"))
402: #if ($playerName == "TEAM")
403: #set ($playerName = 'EMPTY NET')
404: #end
405: #set ($dec = '')
406: #if ($goalie.valueOf("@win") != "")
407: #set ($dec = 'W')
408: #end
409: #if ($goalie.valueOf("@tie") != "")
410: #set ($dec = 'T')
411: #end
412: #if ($goalie.valueOf("@loss") != "")
413: #set ($dec = 'L')
414: #end
415: #set ($savesByPrd = $goalie.valueOf("@savebyprd").split(","))
416: #if ($velocityCount % 2 == 0)
417: #set ($rowClazz = "even")
418: #else
419: #set ($rowClazz = "odd")
420: #end
421: <tr class="${rowClazz}">
422: <td>$player.valueOf("@uni")</td>
423: <td>#printName($playerName,20)</td>
424: <td>$dec</td>
425: <td>$goalie.valueOf("@minutes")</td>
426: <td>$goalie.valueOf("@ga")</td>
427: #foreach ($p in [1..$totalPeriods])
428: #set($index = $velocityCount - 1)
429: #if ($savesByPrd.size() > $index)
430: <td>$savesByPrd[$index]</td>
431: #end
432: #end
433: <td>$goalie.valueOf("@saves")</td>
434: </tr>
435: #end
436: #end
437: </tbody>
438: </table>
439: </div>
440: #end
441:
442: ################################################################################
443: ############################# START PAGE #####################################
444: ################################################################################
445: <head>
446: <title>
447: $visitor
448: #if($isNeutralGame)vs.#else at. #end
449: $home | Box Score
450: #if($gamePlayedOn.length() > 0)
451: | $gamePlayedOn
452: #end
453: </title>
454: </head>
455:
456: #set ($pdfStyle = "width:850px;margin-left: 20px")
457: #if ($stats.view == "pdf")
458: #set ($pdfStyle = "width:730px;")
459: #end
460: <div class="monostats clearfix" style="$pdfStyle">
461:
462: ## GAME INFORMATION
463: <div class="align-center bold">
464: Hockey Game Box Score <br/>
465: $visitor vs $home (#if($gamePlayedOn.length() > 0)$gamePlayedOn #end #if($location.length() > 0) at $location#if($stadium.length() > 0)($stadium)#end#end)
466: </div>
467: <br/>
468:
469: <div class="align-left">
470: $visitor #if($visitorRecord.length() > 0)($visitorRecord)#end vs
471: $home #if($homeRecord.length() > 0)($homeRecord)#end<br/>
472: ##
473: #if($gamePlayedOn.length() > 0)Date: $gamePlayedOn #end
474: #if($location.length() > 0)· Location: $location#end
475: #if($stadium.length() > 0)· Arena: $stadium#end <br/>
476: ##
477: #if($gameAttendance.length() > 0)Attendance: $gameAttendance #end
478: #if($gameStartedAt.length() > 0)· Start time: $gameStartedAt#end
479: #if($gameEndAt.length() > 0)· End time: $gameEndAt#end
480: #if($gameDuration.length() > 0)· Total time: $gameDuration#end
481: </div>
482: <br/>
483:
484: <div class="row-fluid">
485: <div class="span9 clearfix">
486: ## SCORING SUMMARY
487: <table>
488: <thead>
489: <tr>
490: <th class="align-left"></th>
491: <th class="align-left">Prd</th>
492: <th class="align-left">Time</th>
493: <th class="align-left">Team</th>
494: <th class="align-left"></th>
495: <th class="align-left">Scored by</th>
496: <th class="align-left">Assists</th>
497: <th class="align-left">Vis. on ice</th>
498: <th class="align-left">Home on ice</th>
499: </tr>
500: </thead>
501: <tbody>
502: #foreach ($score in $document.selectNodes("hkgame/scores/score"))
503: #if ($velocityCount % 2 == 0)
504: #set ($rowClazz = "even")
505: #else
506: #set ($rowClazz = "odd")
507: #end
508: <tr class="${rowClazz}">
509: <td>$score.valueOf("@number")</td>
510: <td>$score.valueOf("@prd")</td>
511: <td>$score.valueOf("@time")</td>
512: <td>$score.valueOf("@id")</td>
513: <td>$score.valueOf("@type")</td>
514: <td>
515: $score.valueOf("@name")/$score.valueOf("@seasong")
516: </td>
517: <td>
518: $score.valueOf("@assist1")
519: /$score.valueOf("@seasona1")
520: <br/>
521: #if ($score.valueOf("@assist2") != "")
522: $score.valueOf("@assist2")
523: /$score.valueOf("@seasona2")
524: #end
525: </td>
526: <td>$score.valueOf("@vonice")</td>
527: <td>$score.valueOf("@honice")</td>
528: </tr>
529: #end
530: </tbody>
531: </table>
532: <br/> <br/>
533: ##TEAM SUMMARY
534: <span class="align-center bold span12">TEAM SUMMARY</span>
535:
536: <div class="clear"></div>
537: #teamSummaryTable("float:left",$visitor, $visitorTeam)
538: #teamSummaryTable("float:left;padding-left:40px",$home, $homeTeam)
539: <br/> <br/>
540: </div>
541:
542: ## RIGHT TABLES
543: <div class="span3" style="padding-left: 20px">
544: ## GOALS BY PERIOD
545: #teamPeriodTotalTable("Goals by Period","@score")
546: ## SHOTS BY PERIOD
547: #teamPeriodTotalTable("Shots by Period","@shots")
548: ## POWER PLAY GOALS
549: #powerPlayGoalsTable()
550: ## PENALTY MINUTES BY PRD
551: #penaltyMinutesTable()
552: ## STARS
553: <div class="span12" style="margin-bottom: 20px">
554: <span class="bold">Three stars:</span> <br/>
555: #foreach($star in $document.selectNodes("hkgame/stars/star"))
556: ${velocityCount}. $star.valueOf("@name") <br/>
557: #end
558: </div>
559: ## OFFICIALS
560: <div class="span12" style="margin-bottom: 20px">
561: <span class="bold">Officials:</span> <br/>
562: #foreach($official in $document.selectNodes("hkgame/venue/officials/official"))
563: $official.valueOf("@title"): $official.valueOf("@name") <br/>
564: #end
565: </div>
566: </div>
567:
568: <div class="clear"></div>
569: <div class="span12 clearfix">
570: ## GOALTENDERS
571: <span class="align-center bold span12">GOALTENDERS</span>
572: <br/>
573: #goaltendersTable("",$visitor,$visitorTeam)
574: #goaltendersTable("padding-left:50px",$home, $homeTeam)
575: <div class="clear"></div>
576: <br/>
577: ##PENALTY SUMMARY
578: <span class="align-center bold span12">PENALTY SUMMARY</span>
579: <br/>
580: #set ($penalties = $document.selectNodes("hkgame/penalties/pen"))
581: #set ($halfPenalties = ($penalties.size() / 2)+1)
582: #penaltySummaryTable("",$penalties,0,$halfPenalties)
583: #penaltySummaryTable("padding-left:50px",$penalties,$halfPenalties,$penalties.size())
584:
585: ##END
586: <div class="clear"></div>
587: <br/>
588: </div>
589:
590: ## PAGEBREAK
591: <p class="pagebreak" style="page-break-before: always;"> </p>
592:
593: <div class="span12 clearfix">
594: ## FACEOFF SUMMARY
595: <span class="align-center bold span12">FACEOFF SUMMARY</span>
596: <br/>
597: #faceoffSummaryTable("",$visitor,$visitorTeam)
598: #faceoffSummaryTable("padding-left:50px",$home,$homeTeam)
599: <div class="clear"></div>
600: <br/>
601:
602: ##END
603: <div class="clear"></div>
604: <br/>
605: </div>
606: </div>
607: <div class="clear"></div>
608: </div>
|
|