2024-25 Behrend Men's Track & Field Schedule
Season
December
1 event
Sat. 7
1 event
There was a problem with a Velocity script | |
Page | sports/mtrack/2024-25/schedule-template |
Error | VM #printTable: too many arguments to macro. Wanted 1 got 2 at d70lf7duwq70xwabsports/mtrack/2024-25/schedule-template[line 1408, column 17] |
Page source: |
1: #******************************************************************** 2: DO NOT MODIFY THIS FILE DIRECTLY - DEVIN SMITH 3: 4: This file is a direct duplicate of the schedule-networked-template 5: Any changes required should be made tot he other file and then 6: duplicated manually to this file. 7: ********************************************************************# 8: 9: ## PICK UP OPTIONS 10: $website.include("options") 11: #set ($options = $request.getAttribute("options")) 12: 13: #* BEGIN TABLE STYLE OPTIONS ***************# 14: #set($tableHelperClass = "") 15: #if ($options.get("table_bordered") != false) #set($tableHelperClass = "$tableHelperClass table-bordered") #end 16: #if ($options.get("table_head_dark") == true) #set($tableHelperClass = "$tableHelperClass thead-dark") #end 17: #if ($options.get("table_hover") != false) #set($tableHelperClass = "$tableHelperClass table-hover") #end 18: #* END TABLE STYLES OPTIONS ****************# 19: 20: ## CONFERENCE TEAM LINKING 21: #set ($confmemberIDs = $page.teamIDs) 22: 23: #set ($isPrinterFriendly = false) 24: #if ($request.getParameter("dec") == "printer-decorator") 25: #set ($isPrinterFriendly = true) 26: #end 27: 28: ## NEXT EVENT COUNTDOWN 29: #set ($showEventCountdown = true) 30: #if ($options.get("schedule_show_eventcountdown") == "false") 31: #set ($showEventCountdown = false) 32: #end 33: 34: #set ($showLeaders = true) 35: #if ($options.get("schedule_show_leaders") == "no") 36: #set ($showLeaders = false) 37: #end 38: #if ($request.getParameter("showLeaders") == true) 39: #set ($showLeaders = true) 40: #elseif ($request.getParameter("showLeaders") == false) 41: #set ($showLeaders = false) 42: #end 43: 44: #set ($showTeamLeadersCarousel = false) 45: #if ($options.get("schedule_show_team_leader_carousel") == "yes") 46: #set ($showTeamLeadersCarousel = true) 47: #end 48: 49: #set ($showRelatedArticles = false) 50: #if ($options.get("schedule_network_articles") == "yes") 51: #set ($showRelatedArticles = true) 52: #end 53: 54: #set ($leaderSportsMapped = ["basketball","soccer","volleyball","baseball","softball","hockey","lacrosse","waterpolo","football"]) 55: 56: #if ($showLeaders) 57: $website.include("${page.sectionPage.url}/roster?tmpl=roster-headshots-template") 58: #set ($rosterHeadshots = $!request.getAttribute("roster_headshots")) 59: #end 60: 61: #set ($isTeamSchedule = false) 62: #if ($schedule.team.length() > 0) ## ?teamId= 63: #set ($isTeamSchedule = true) 64: #end 65: 66: #set ($isSharedMeet = false) 67: #if ($schedule.team.length() == 0 && !$schedule.numericResults && !$page.contentType.equals('loki/schedule')) 68: #set ($isSharedMeet = true) 69: #end 70: 71: #set ($linksAbbreviations = { "Preview": "PR", "Box Score": "BX", "Results": "RE", "Recap": "RC", "Live stats": "LS", "Video": "V", "Audio": "A", "Photos": "PH", "Tickets": "T", "Directions": "DR" }) 72: #set ($linksOrder = ["LS", "VI", "BS", "RC", "RE", "GA", "AU", "DI", "TI", "PR", "LI"]) 73: #set ($excludeLinksWhenEventIsFinished = ["LS", "DI", "TI", "PR"]) 74: #set ($excludeLinksWhenEventIsLive = ["DI", "TI", "PR"]) 75: 76: #set ($restrictLinks = true) 77: #if ($options.get("schedule_restrict_links") == false) 78: #set ($restrictLinks = false) 79: #end 80: 81: #set ($showLinkIcons = true) 82: #if ($request.getParameter("showLinkIcons") == false) 83: #set ($showLinkIcons = false) 84: #end 85: 86: #set ($abbreviatedLinks = false) 87: #if ($request.getParameter("abbreviatedLinks") == true) 88: #set ($abbreviatedLinks = true) 89: #end 90: 91: #set ($showVsAt = true) 92: #if ($options.get("schedule_hide_vs_at") == true) 93: #set ($showVsAt = false) 94: #end 95: 96: #set ($showTeamStats = true) 97: #if ($options.get("schedule_hide_team_stats") == true) 98: #set ($showTeamStats = false) 99: #end 100: 101: #set ($showExhibitionGames = true) 102: #if ($options.get("schedule_hide_exhibition_events") == true) 103: #set ($showExhibitionGames = false) 104: #end 105: 106: #set ($showSpotOnAddToCal = false) 107: #if ($options.get("schedule_show_spoton_add_to_cal") == "show") 108: #if ($options.get('stanza_code').length() > 0) 109: #set ($showSpotOnAddToCal = true) 110: #set ($stanzaCode = $options.get('stanza_code').toLowerCase()) 111: #end 112: #end 113: 114: #set ($showTeamLogo = false) 115: #if ($options.get("schedule_show_team_logo") == "show" && !$isPrinterFriendly) 116: #set ($showTeamLogo = true) 117: #end 118: 119: #set ($includeTimeZone = true) 120: #if ($options.get('calendarIncludeTimeZone').length() > 0) 121: #set ($includeTimeZone = $options.get('calendarIncludeTimeZone').toLowerCase()) 122: #end 123: 124: #set ($enhancedLayout = false) 125: #set ($scheduleLayout = "standard") 126: #set ($scheduleView = "list") 127: #if ($options.get("schedule_enhanced_layout") == "yes" && !$isPrinterFriendly) 128: #set ($enhancedLayout = true) 129: #set ($scheduleLayout = "enhanced") 130: #set ($scheduleView = "cards") 131: #end 132: 133: #set ($resultFormat = "AP1") 134: #if ($options.get("schedule_result_format").equals("L, 1-2")) ## whether to show $event.APResult or $event.AP2Result 135: #set ($resultFormat = "AP2") 136: #end 137: 138: #set ($scheduleNextEventScroll = false) 139: #if ($options.get("schedule_next_event_scroll") && $options.get("schedule_next_event_scroll") == true) 140: #set ($scheduleNextEventScroll = true) 141: #end 142: 143: #set($groupMonths = true) 144: #set($groupDates = false) 145: #set($currentMonthFirst = false) 146: 147: #* Defines if schedules events should be grouped by dates into callapsible panels *# 148: #if(!$isTeamSchedule) ## Conference 149: #set($groupDates = true) 150: #end 151: 152: #if ($options.get("schedule_group_by_months") == false) 153: #set($groupMonths = false) 154: #end 155: #if ($options.get("schedule_group_by_dates") == false) 156: #set($groupDates = false) 157: #end 158: 159: #if ($options.get("schedule_current_month_first") == true) 160: #set($currentMonthFirst = true) 161: #end 162: 163: $request.setAttribute("scheduleNextEvent", false) 164: $request.setAttribute("scheduleLastEvent", $event.id) 165: 166: #set ($dateFormat = "EEE. d") 167: 168: #if ($options.get("schedule_date_format").equals("Thu. 3")) 169: #set ($dateFormat = "EEE. d") 170: #elseif ($options.get("schedule_date_format").equals("Mar. 15")) 171: #set ($dateFormat = "MMM dd") 172: #elseif ($options.get("schedule_date_format").equals("Mar. 15, 2013")) 173: #set ($dateFormat = "MMM dd, yyyy") 174: #elseif ($options.get("schedule_date_format").equals("March 15, 2013")) 175: #set ($dateFormat = "MMMM dd, yyyy") 176: #elseif ($options.get("schedule_date_format").equals("March 15")) 177: #set ($dateFormat = "MMMM dd") 178: #elseif ($options.get("schedule_date_format").equals("03/15/2013")) 179: #set ($dateFormat = "MM/dd/yyyy") 180: #elseif ($options.get("schedule_date_format").equals("03/15")) 181: #set ($dateFormat = "MM/dd") 182: #elseif ($options.get("schedule_date_format").equals("Thursday, March 15, 2013")) 183: #set ($dateFormat = "EEEE, MMMM dd, yyyy") 184: #elseif ($options.get("schedule_date_format").equals("Thursday, Mar. 15, 2013")) 185: #set ($dateFormat = "EEEE, MMM dd, yyyy") 186: #elseif ($options.get("schedule_date_format").equals("Thursday, March 15")) 187: #set ($dateFormat = "EEEE, MMMM dd") 188: #elseif ($options.get("schedule_date_format").equals("Thursday, Mar. 15")) 189: #set ($dateFormat = "EEEE, MMM dd") 190: #elseif ($options.get("schedule_date_format").equals("Thu., March 15")) 191: #set ($dateFormat = "EEE., MMMM dd") 192: #elseif ($options.get("schedule_date_format").equals("Thu., Mar. 15")) 193: #set ($dateFormat = "EEE., MMM dd") 194: #end 195: 196: #set ($confNotation = "*") 197: #set ($divisionNotation = "^") 198: #set ($exhibitionNotation = "#") 199: #set ($postseasonNotation = "%") 200: #set ($multipleLeadersNotation = "+") 201: 202: #if (!$enhancedLayout) 203: #set ($scheduleLayout = 1) 204: #if ($tool.math.toInteger($options.get("schedule_default_layout")) > 1) 205: #set ($scheduleLayout = $tool.math.toInteger($options.get("schedule_default_layout"))) 206: #end 207: 208: ## SET DEFAULT LABELS AND FIELDS FOR NUMERIC vs. NON-NUMERIC SCHEDULES 209: #if ($isTeamSchedule) 210: #if ($schedule.numericResults) ## team h2h 211: #if ($scheduleLayout == 1) 212: #set ($scheduleFields = ["date", "opponent+neutralsite", "result", "status", "notes", "links"]) 213: #set ($scheduleLabels = ["Date", "Opponent", "Result", "Status", "Notes", "Links"]) 214: #elseif ($scheduleLayout == 2) 215: #set ($scheduleFields = ["date", "opponent+neutralsite", "result", "status", "notes", "links"]) 216: #set ($scheduleLabels = ["Date", "Opponent", "Result", "Status", "Notes", "Links"]) 217: #elseif ($scheduleLayout == 3) 218: #set ($scheduleFields = ["date", "opponent", "result", "status", "notes+neutralsite", "links"]) 219: #set ($scheduleLabels = ["Date", "Opponent", "Result", "Status", "Notes", "Links"]) 220: #end 221: #else 222: #if ($scheduleLayout == 1) 223: #set ($scheduleFields = ["date", "opponent+neutralsite", "status", "team_away_result", "notes", "links"]) 224: #set ($scheduleLabels = ["Date", "Event", "Status", "Result", "Notes", "Links"]) 225: #elseif ($scheduleLayout == 2) 226: #set ($scheduleFields = ["date", "opponent", "status", "team_away_result", "notes+neutralsite", "links"]) 227: #set ($scheduleLabels = ["Date", "Event", "Status", "Result", "Notes", "Links"]) 228: #elseif ($scheduleLayout == 3) 229: #set ($scheduleFields = ["date", "opponent+neutralsite","status", "team_away_result", "notes", "links"]) 230: #set ($scheduleLabels = ["Date", "Event", "Status", "Result", "Notes", "Links"]) 231: #end 232: #end 233: #else ## CONFERENCE VIEW 234: #if($schedule.numericResults) ## conf h2h 235: #set ($scheduleFields = ["date", "team_away+team_away_result", "team_home+team_home_result", "notes+neutralsite", "status", "links"]) 236: #set ($scheduleLabels = ["Date", "Away", "Home", "Notes", "Status", "Links"]) 237: #else 238: #set ($scheduleFields = ["date", "team_away+team_away_result", "neutralsite", "notes", "links"]) 239: #set ($scheduleLabels = ["Date", "Team", "Event", "Notes", "Links"]) 240: #end 241: #end 242: 243: ## Remove dates from the array is they are present and groupDates is true. 244: #if ($groupDates) 245: #set ($filteredFields = "") 246: #foreach ($field in $scheduleFields) 247: #if ($field != "date") 248: #set ($filteredFields = "$filteredFields$field,") 249: #end 250: #end 251: #set ($scheduleFields = []) 252: #foreach ($f in $filteredFields.split(",")) 253: #set ($temp = $scheduleFields.add($f)) 254: #end 255: 256: #set ($filteredLabels = "") 257: #foreach ($label in $scheduleLabels) 258: #if ($label != "Date") 259: #set ($filteredLabels = "$filteredLabels$label,") 260: #end 261: #end 262: #set ($scheduleLabels = []) 263: #foreach ($l in $filteredLabels.split(",")) 264: #set ($temp = $scheduleLabels.add($l)) 265: #end 266: #end 267: ## End date removal 268: 269: ## SET FIELDS AND LABELS FROM OPTIONS IF AVAILABLE AND SANITIZE THEM 270: #if (!$options.get("schedule_fields").isEmpty() && !$options.get("schedule_labels").isEmpty()) 271: #set ($optionFields = $options.get("schedule_fields")) 272: #set ($optionFields = $optionFields.split(",")) 273: #foreach ($field in $optionFields) 274: #set ($field = $field.trim()) 275: $tool.list.set($optionFields, $tool.math.sub($velocityCount, 1), $field) 276: #end 277: 278: #set ($optionLabels = $options.get("schedule_labels")) 279: #set ($optionLabels = $optionLabels.split(",")) 280: #foreach ($label in $optionLabels) 281: #set ($label = $label.trim()) 282: #if ($label.equals("-")) 283: #set ($label = " ") 284: #end 285: $tool.list.set($optionLabels, $tool.math.sub($velocityCount, 1), $label) 286: #end 287: 288: #if ($tool.list.size($optionFields) == $tool.list.size($optionLabels)) 289: #set ($scheduleFields = $optionFields) 290: #set ($scheduleLabels = $optionLabels) 291: #end 292: #end 293: #end 294: 295: ## MACROS 296: #macro (printPageTitle) 297: #if ($page.title.length() > 0) 298: #if ($schedule.team.length() > 0 && $page.teams.size() > 1) 299: #set ($pageTitle = "${page.title} - ${schedule.team}") 300: #else 301: #set ($pageTitle = $page.title) 302: #end 303: <h1>$pageTitle</h1> 304: $!request.setAttribute("pageTitle", "${pageTitle}") 305: #end 306: $!request.setAttribute("pageDescription", "${pageTitle} - Record: $schedule.Record") 307: 308: #end ## printPageTitle 309: 310: #macro (printEventTypesFilter) 311: #if ($eventTypes.size() > 1) 312: #set ($id = "filter-by-type") 313: <div class="schedule-filter flex-grow-1"> 314: <div class="input-group"> 315: <span class="input-group-text" id="${id}-group-text">Type</span> 316: <select class="form-control type-filter form-select" aria-describedby="${id}-group-text" id="$id" data-filter="true" aria-label="Filter events by selecting an event type from the list"> 317: <option value="all">All</option> 318: #if ($eventTypes.contains("conference")) 319: <option value="conf">Conference</option> 320: #end 321: #if ($eventTypes.contains("division")) 322: <option value="division">Division</option> 323: #end 324: #if ($eventTypes.contains("exhibition")) 325: <option value="exhibition">Exhibition</option> 326: #end 327: #if ($eventTypes.contains("postseason")) 328: <option value="postseason">Post Season</option> 329: #end 330: </select> 331: </div> 332: </div> 333: #end 334: #end ## printEventTypesFilter 335: 336: #macro (printVenueFilter) 337: #if (($isSharedMeet || $isTeamSchedule) && $eventVenues.size() > 1) 338: #set ($id = "filter-by-venue") 339: <div class="schedule-filter flex-grow-1"> 340: <div class="input-group"> 341: <span class="input-group-text" id="${id}-group-text">Venue</span> 342: <select class="form-control venue-filter form-select" aria-describedby="${id}-group-text" id="$id" data-filter="true" aria-label="Filter events by selecting a venue from the list"> 343: <option value="all">All</option> 344: #if ($eventVenues.contains("home")) 345: <option value="home">Home Games</option> 346: #end 347: #if ($eventVenues.contains("away")) 348: <option value="away">Away Games</option> 349: #end 350: #if ($eventVenues.contains("neutral")) 351: <option value="neutral">Neutral Games</option> 352: #end 353: </select> 354: </div> 355: </div> 356: #end 357: #end ## printVenueFilter 358: 359: #macro (printArchiveFilter) 360: $!request.setAttribute("pageObj", $page) 361: ## INCLUDE NAVBAR FOR SEASON ARCHIVES 362: #set ($legacyArchiveFilter = false) 363: #set ($legacyArchiveFilter = $options.get("legacy_archive_filter") == true) 364: 365: ## legacy archive filter uses a navbar to power the season switcher 366: #if ($legacyArchiveFilter) 367: $website.include("navbar-schedule-archive?tmpl=schedule-archive-list-template") 368: #set ($archiveEntries = $request.getAttribute("schedule_archives")) 369: #if ($archiveEntries.size() > 0) 370: <div class="schedule-filter col-12 col-sm-6 col-md-auto flex-grow-1"> 371: <div class="input-group"> 372: <span class="input-group-text" id="filter-by-season-group-text">Season</span> 373: <select class="form-control season-filter form-select" onchange="location=this.value" aria-describedby="filter-by-season-group-text" id="filter-by-season" aria-label="Change the season by selecting an option from the list"> 374: #foreach ($entry in $archiveEntries) 375: #if ($entry.label.length() > 0 && $entry.targetURL.length() > 0) 376: <option value="$entry.targetURL" #if ($entry.targetURL.equals($page.url)) selected="selected" #end>$entry.label</option> 377: #end 378: #end 379: </select> 380: </div> 381: </div> 382: #end 383: #else 384: $website.include("conf-season-filter-template") 385: #end 386: #end ## printArchiveFilter 387: 388: #macro (printFilters) 389: <div class="page-filters schedule-filters d-print-none"> 390: <div class="btn-toolbar d-flex justify-content-between gap-3" role="toolbar" aria-label="Schedule tool bar"> 391: <div class="m-0" role="group" aria-label="Print friendly version"> 392: <a href="${page.url}?dec=printer-decorator" class="btn btn-link border text-decoration-none text-nowrap"><span class="fa fa-print"></span> Print</a> 393: #if ($showSpotOnAddToCal) 394: <div class="d-inline-block spoton-add-to-cal"><a class="spoton-it btn btn-link border text-decoration-none" data-size="medium" href="https://stanza.co/schedules"><span class="far fa-calendar-alt"></span> Add to calendar</a></div> 395: #end 396: </div> 397: #printArchiveFilter() 398: #printEventTypesFilter() 399: #printVenueFilter() 400: 401: </div> 402: </div> 403: #end ## printFilters 404: 405: #macro (printSubscribeLinks) 406: #if($schedule.events.size() > 0) 407: <div class="subscribe-links p-3 my-3 border"> 408: <div class="btn-group me-auto"> 409: <a class="btn btn-sm btn-outline-primary" href="$icalURL"><span class="far fa-calendar-alt"></span> <strong>iCalendar</strong></a> ## iCalendar 410: <a class="btn btn-sm btn-outline-primary" href="$rssURL"><span class="fas fa-rss"></span> <strong>RSS Feed</strong></a> ## RSS 411: </div> 412: </div> 413: #end 414: #end 415: 416: #macro (printPostSchedule) 417: #set ($schedulePostURL = "${page.url}-post") 418: #if ($website.exists($schedulePostURL)) 419: <div class="schedule-post">$website.include($schedulePostURL)</div> 420: #end 421: #end 422: 423: #macro (printLegends) 424: <div class="notations d-flex flex-column flex-md-row align-items-center justify-content-center align-items-md-start justify-content-md-start gap-3 flex-wrap my-3 small text-muted"> 425: #if($enhancedLayout) 426: <div class="event-legend-venue p-2 px-3 border rounded"> 427: <div class="d-flex align-items-center justify-content-center align-items-md-start justify-content-md-start flex-wrap gap-3"> 428: #if ($eventVenues.contains("home")) 429: <div class="card-venue-icon home home-color-indicator"> 430: <span class="fa-solid fa-circle fa-sm" aria-hidden="true"></span> 431: Home 432: </div> 433: #end 434: #if ($eventVenues.contains("away")) 435: <div class="card-venue-icon away away-color-indicator"> 436: <span class="fa-solid fa-circle fa-sm" aria-hidden="true"></span> 437: Away 438: </div> 439: #end 440: #if ($eventVenues.contains("neutral")) 441: <div class="card-venue-icon neutral neutral-color-indicator"> 442: <span class="fa-solid fa-circle fa-sm" aria-hidden="true"></span> 443: Neutral 444: </div> 445: #end 446: </div> 447: </div> 448: #end 449: 450: <div class="event-legend-type p-2 px-3 rounded"> 451: <div class="d-flex align-items-center justify-content-center align-items-md-start justify-content-md-start flex-wrap gap-3"> 452: #if ($eventTypes.contains("exhibition")) 453: <div class="exhibition"><strong>$exhibitionNotation</strong> <span>Exhibition</span></div> 454: #end 455: #if ($eventTypes.contains("conference")) 456: <div class="conf"><strong>$confNotation</strong> <span>Conference</span></div> 457: #end 458: #if ($eventTypes.contains("division")) 459: <div class="division"><strong>$divisionNotation</strong> <span>Division</span></div> 460: #end 461: #if ($eventTypes.contains("postseason")) 462: <div class="postseason"><strong>$postseasonNotation</strong> <span>Postseason</span></div> 463: #end 464: #if ($eventVenues.contains("home") && $isTeamSchedule) 465: <div class="home"><strong><span>Home events in bold</span></strong></div> 466: #end 467: </div> 468: </div> 469: 470: </div> 471: #end ## printLegends 472: 473: #macro (printLinkAriaLabel $event $link $linkTypeCounter) 474: #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}") 475: #if ($event.neutralSite.length() > 0 || $event.home) 476: #set ($vsOrAt = "vs.") 477: #else 478: #set ($vsOrAt = "at") 479: #end 480: #if ($event.teams.size() > 1) 481: #set ($ariaLabel = "${ariaLabel} ${event.teams.get(0).name} ${vsOrAt} ${event.teams.get(1).name}:") 482: #elseif ($event.teams.size() == 1) 483: #set ($ariaLabel = "${ariaLabel} ${event.teams.get(0).name}:") 484: #end 485: #if ($event.neutralSite.length() > 0) 486: #set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:") 487: #end 488: #set ($ariaLabel = "${ariaLabel} ${link.name}") 489: #if ($linkTypeCounter > 1) 490: #set ($ariaLabel = "${ariaLabel} link ${linkTypeCounter}") 491: #end 492: aria-label="$ariaLabel" 493: #end 494: 495: #macro (printEventLink $link $class) 496: #set ($linkText = $link.name) 497: #if ($abbreviatedLinks) 498: #if ($link.mapType == "LI" || "$!link.siteCustomSettings.abbreviatedTitle" != "") 499: #set ($linkText = "LI") 500: #if("$!link.siteCustomSettings.abbreviatedTitle" != "") 501: #set ($linkText = $link.siteCustomSettings.abbreviatedTitle) 502: #end 503: #else 504: #foreach ($l in $linksAbbreviations.entrySet()) 505: #if ($link.name.equalsIgnoreCase($l.key)) 506: #set ($linkText = $l.value) 507: #end 508: #end 509: #end 510: #end 511: 512: <a #printLinkAriaLabel($event, $link, $linkTypeCounter) href="$link.url" #if ($website.isExternalLink($link.url)) target="_blank" #end class="${class} d-print-none"> 513: #if ($showLinkIcons) 514: #if ($link.mapType == "GA") ##gallery 515: <span class="far fa-sm fa-images"></span> 516: #elseif ($link.mapType == "TI") ##tickets 517: <span class="fas fa-sm fa-ticket-alt"></span> 518: #elseif($link.mapType == "RC") ##recap 519: <span class="fa fa-sm fa-share"></span> 520: #elseif($link.mapType == "PR") ##preview 521: <span class="far fa-sm fa-eye"></span> 522: #elseif($link.mapType == "LS") ##live stats 523: <span class="fas fa-sm fa fa-eye"></span> 524: #elseif($link.mapType == "VI") ##video 525: <span class="fa fa-sm fa-video-camera"></span> 526: #elseif($link.mapType == "AU") ## audio 527: <span class="fas fa-sm fa-headphones-alt"></span> 528: #elseif($link.mapType == "DI") ##directions 529: <span class="fas fa-sm fa-directions"></span> 530: #elseif($link.mapType == "BS") ##box scores 531: <span class="far fa-sm fa-chart-bar"></span> 532: #elseif($link.mapType == "RE") ##results 533: <span class="fa fa-sm fa-calculator"></span> 534: #elseif($link.mapType == "LI") ##custom link 535: <span class="fa fa-sm fa-external-link"></span> 536: #end 537: <span class="text d-md-none d-lg-inline-block">$linkText</span> 538: #else 539: <span class="text">$linkText</span> 540: #end 541: </a> 542: #end 543: 544: #macro (printEventLinks $event $class) 545: #set ($eventLinks = $event.links) 546: 547: #set ($isFinished = false) 548: #if ($event.statusCode >= 0 || ($event.statusCode == -3 && $now.time >= ($event.date.time + (1000*60*60*24)))) ## -3 is reported for event sports 549: #set ($isFinished = true) 550: #end 551: 552: #if ($restrictLinks && ($event.inProgress || $isFinished)) 553: #set ($eventLinks = []) 554: #foreach ($link in $event.links) 555: #if ($event.inProgress && !$excludeLinksWhenEventIsLive.contains($link.mapType)) 556: #set ($ignoreme = $eventLinks.add($link)) 557: #elseif ($isFinished && !$excludeLinksWhenEventIsFinished.contains($link.mapType)) 558: #set ($ignoreme = $eventLinks.add($link)) 559: #end 560: #end 561: #end 562: 563: #foreach ($mapType in $linksOrder) 564: #foreach ($link in $eventLinks) 565: #if ($mapType == $link.mapType) 566: #printEventLink($link, "link $class") 567: #end 568: #end 569: #end 570: 571: #end ## printEventLinks 572: 573: #macro (printEventButtons $event) 574: #set ($eventLinks = $event.links) 575: 576: #set ($isFinished = false) 577: #if ($event.statusCode >= 0 || ($event.statusCode == -3 && $now.time >= ($event.date.time + (1000*60*60*24)))) ## -3 is reported for event sports 578: #set ($isFinished = true) 579: #end 580: 581: #if ($restrictLinks && ($event.inProgress || $isFinished)) 582: #set ($eventLinks = []) 583: #foreach ($link in $event.links) 584: #if ($event.inProgress && !$excludeLinksWhenEventIsLive.contains($link.mapType)) 585: #set ($ignoreme = $eventLinks.add($link)) 586: #elseif ($isFinished && !$excludeLinksWhenEventIsFinished.contains($link.mapType)) 587: #set ($ignoreme = $eventLinks.add($link)) 588: #end 589: #end 590: #end 591: 592: #set ($linksCounter = 0) 593: <div class="list-group list-group-horizontal-md w-100"> 594: #foreach ($mapType in $linksOrder) 595: #set ($linkTypeCounter = 0) 596: 597: #foreach ($link in $eventLinks) 598: #if ($mapType == $link.mapType) 599: #printEventLink($link, "link text-nowrap") 600: #end 601: #end 602: 603: #end 604: </div> 605: #end ## printEventButtons 606: 607: #macro (printEventCardLinks $event) 608: 609: #set ($isFinished = false) 610: #if ($event.statusCode >= 0 || ($event.statusCode == -3 && $now.time >= ($event.date.time + (1000*60*60*24)))) ## -3 is reported for event sports 611: #set ($isFinished = true) 612: #end 613: 614: #if ($restrictLinks && ($event.inProgress || $isFinished)) 615: #set ($eventLinks = []) 616: #foreach ($link in $event.links) 617: #if ($event.inProgress && !$excludeLinksWhenEventIsLive.contains($link.mapType)) 618: #set ($ignoreme = $eventLinks.add($link)) 619: #elseif ($isFinished && !$excludeLinksWhenEventIsFinished.contains($link.mapType)) 620: #set ($ignoreme = $eventLinks.add($link)) 621: #end 622: #end 623: #else 624: #set ($eventLinks = $event.links) 625: #end 626: 627: #set ($linksCounter = 0) 628: #foreach ($mapType in $linksOrder) 629: #set ($linkTypeCounter = 0) 630: #foreach ($link in $eventLinks) 631: #if ($mapType == $link.mapType) 632: #printEventLink($link, "link list-inline-item text-decoration-none") 633: #end 634: #end 635: 636: #end 637: #end ## printEventCardLinks 638: 639: #macro(neCounter $event) 640: <div class="events-countdown d-flex flex-column justify-content-center w-100"> 641: <div class="counter-details"> 642: <div class="counter-details-inner"> 643: #set ($countdownDateServer = $tool.timeZone.shift($event.date, $event.localTimeZone, $tool.timeZone.systemTimeZone)) 644: #set ($countdownDate = $formatter.formatDate($countdownDateServer, "yyyy-MM-dd+HH:mm:ss+z")) 645: $website.includeAgain("component-countdown-digits-template?date=${countdownDate}") 646: </div> 647: </div> 648: </div> 649: #end 650: 651: #macro (printNotation $title $notation) 652: <span class="notation small text-muted" title="$title">$notation</span> 653: #end 654: 655: #macro (printNotations $event) 656: #if ($event.conference) #printNotation("Conference", $confNotation) #end 657: #if ($event.division) #printNotation("Division", $divisionNotation) #end 658: #if (!$event.overall) #printNotation("Do not count in overall record", $exhibitionNotation) #end 659: #if ($event.postseason) #printNotation("Post season", $postseasonNotation) #end 660: #end 661: 662: #macro (printTeamLogoSetWidth $team $width) 663: #if ($showTeamLogo && $team.teamId.length() > 0) 664: <span class="event-logo logo-placeholder"> 665: <img src="${website.teamLogo($team.teamId)}" alt="$team.name team logo" style="max-width:${width}px; max-height:${width}px" class="#if ($enhancedLayout)img-thumbnail border-0#end" /> 666: </span> 667: #end 668: #end 669: 670: #macro (printTeamName $team) 671: #if ($team.name.length() > 0) 672: #if ($confmemberIDs.contains($team.teamId) && $page.teams.size() > 1 && !$isTeamSchedule) 673: <a href="${page.url}?teamId=${team.teamId}" class="text-decoration-none $page.teams.size()" title="${team.name}"> 674: <span class="team-name">$team.name</span> 675: </a> 676: #else 677: <span class="team-name" title="${team.name}">$team.name</span> 678: #end 679: #end 680: #end 681: 682: #macro (printAPResult $event) 683: #if ($resultFormat.equals("AP1")) 684: #set ($APResult = $event.APResult) 685: #elseif ($resultFormat.equals("AP2")) 686: #set ($APResult = $event.AP2Result) 687: #end 688: 689: #if (!$event.inProgress && $APResult.length() > 0) 690: #if ($APResult.startsWith("W, ")) 691: $APResult.replace("W, ", '<span class="text-success" data-context="result">W</span><span class="fw-normal">,</span> ') 692: #elseif ($APResult.startsWith("L, ")) 693: $APResult.replace("L, ", '<span class="text-danger" data-context="result">L</span><span class="fw-normal">,</span> ') 694: #else 695: $APResult 696: #end 697: #else 698: $event.result 699: #end 700: #end 701: 702: #macro (printEventStatus $event) 703: #if ($includeTimeZone) 704: #if ($includeTimeZone.contains('local')) 705: $formatter.formatStatus($event).setTimeFormat("h:mm a z").useEventTimeZone() 706: #else 707: $formatter.formatStatus($event).setTimeFormat("h:mm a z") 708: #end 709: #else 710: $formatter.formatStatus($event) 711: #end 712: #end 713: 714: #macro (printEventNeutralSite $event) 715: #if ($event.neutralSite.length() > 0) 716: @ $event.neutralSite 717: #end 718: #end 719: 720: #macro (printEventNotes $event) 721: #if ($event.notes.length() > 0) 722: $event.notes 723: #end 724: #end 725: 726: #macro (printBoxscoreRecapUrl $event) 727: #set ($boxscoreURL = "") 728: #set ($recapURL = "") 729: #foreach ($link in $event.links) 730: #if ($boxscoreURL.length() == 0 && $link.url.endsWith(".xml") && $link.mapType == "BS" && !$website.isExternalLink($link.url)) 731: data-boxscore="$link.url" 732: #elseif ($link.mapType == "RC" && $recapURL.length() == 0 && !$website.isExternalLink($link.url)) 733: data-recap="$link.url" 734: #end 735: #end 736: #end 737: 738: #macro (printTeamListImage $src $alt $class) 739: #set ($src = "${src}?max_height=576&max_width=576&crop=1") 740: <div class="ratio ratio-1x1"> 741: <span class="align-content-center"> 742: <img src="${src}" alt="${alt}" class="${class}" /> 743: </span> 744: </div> 745: #end 746: 747: #macro (printImage $src $alt $class) 748: #set ($src = "${src}?max_height=576&max_width=576&crop=1") 749: <div class="ratio ratio-1x1 rounded-circle overflow-hidden img-thumbnail"> 750: <span class="align-content-center"> 751: <img src="${src}" alt="${alt}" class="${class}" /> 752: </span> 753: </div> 754: #end 755: 756: #macro (printSharedMeet) 757: #set ($teams = $tool.sorter.sort($page.teams.entrySet(), "value")) 758: #set ($teamsThreshold = 20) 759: 760: #if ($teams.size() > $teamsThreshold) 761: #set ($teamsByAlphabets = {}) 762: #foreach ($team in $teams) 763: #set ($firstLetter = $team.value.charAt(0)) 764: #set ($arr = []) 765: #if ($teamsByAlphabets.containsKey($firstLetter)) 766: #set ($arr = $teamsByAlphabets.get($firstLetter)) 767: #end 768: #set ($bool = $arr.add($team)) 769: #set ($val = $teamsByAlphabets.put($firstLetter, $arr)) 770: #end 771: 772: <ul class="team-alphabets"> 773: #foreach ($alphabet in $teamsByAlphabets.entrySet()) 774: <li><a href="#${alphabet.key}">$alphabet.key</a></li> 775: #end 776: </ul> 777: 778: <div class="team-list clearfix"> 779: <div class="col"> 780: #foreach ($obj in $teamsByAlphabets.entrySet()) 781: #if ($velocityCount == 8 || $velocityCount == 15) 782: </div><div class="col"> 783: #end 784: #set ($teamList = $obj.value) 785: <ul> 786: <li class="title" id="${obj.key}">$obj.key</li> 787: #foreach ($team in $teamList) 788: <li><a href="${page.url}?teamId=${team.key}">$team.value</a></li> 789: #end 790: </ul> 791: #end 792: </div> 793: </div> 794: #else ## less than threshold 795: #if ($teams.size() == 0) 796: <div class="alert alert-secondary" role="alert"> 797: There are no teams that match this criteria. Please check back soon! 798: </div> 799: #else 800: <div class="team-list p-3 p-lg-5 border"> 801: <div class="fs-5 text-center mb-3">Available Team Schedules</div> 802: <div class="btn-toolbar d-flex justify-content-center align-items-center gap-2 mb-3"> 803: #foreach ($team in $teams) 804: <div> 805: <a href="${page.url}?teamId=${team.key}" class="btn btn-link border-0 text-decoration-none"> 806: <span class="d-flex justify-content-start align-items-center gap-2"> 807: <span class="img-mw-3" style="width:3rem;"> 808: #printTeamListImage($website.teamLogo($!{team.key}), ${team.value}, "img-fluid") 809: </span> 810: </span> 811: </a> 812: </div> 813: #end 814: </div> 815: <div class="btn-toolbar d-flex justify-content-center align-items-center gap-2"> 816: #foreach ($team in $teams) 817: <a href="${page.url}?teamId=${team.key}" class="btn btn-link border text-decoration-none"> 818: $team.value 819: </a> 820: #end 821: </div> 822: </div> 823: #* 824: <div class="team-list"> 825: <div class="row row-cols-2 row-cols-sm-2 row-cols-md-3 row-cols-lg-4 row-cols-xl-6 g-3"> 826: #foreach ($team in $teams) 827: <div class="cards col"> 828: <div class="card position-relative"> 829: <div class="card-body d-flex flex-column gap-2"> 830: <div class="card-team-logo text-center w-100"> 831: <div class="d-flex flex-column align-items-center justify-content-center"> 832: <div style="width:5rem;"> 833: #printTeamListImage($website.teamLogo($!{team.key}), ${team.value}, "img-fluid") 834: </div> 835: </div> 836: </div> 837: <div class="card-title entry-title fw-bold mb-0 text-center"> 838: <a href="${page.url}?teamId=${team.key}" class="stretched-link">$team.value</a> 839: </div> 840: </div> 841: </div> 842: </div> 843: #end 844: </div> 845: </div> 846: 847: *# 848: #end 849: #end ## teams threshold 850: #end ## printSharedMeet 851: 852: #set($statClass = "flex-fill text-center border-bottom border-end p-2 p-lg-3 col-4 col-sm-3 col-md-4 col-lg-auto") 853: 854: #macro (printStat $label $val) 855: <li class="$statClass"> 856: <div class="d-flex flex-column justify-content-center align-items-center h-100"> 857: <div class="small text-uppercase text-muted">$label</div> 858: <div class="fs-5 lh-1 text-nowrap fw-bold">$val</div> 859: </div> 860: </li> 861: #end 862: 863: #macro (printStatGraph $label $val) 864: <li class="$statClass"> 865: <div class="d-flex flex-column justify-content-center align-items-center h-100 proj-progress-card"> 866: <div class="small text-uppercase fw-normal">$label</div> 867: <div class="fs-5 lh-1 text-nowrap fw-bold">$formatter.formatNumber($val, "#.000")</div> 868: 869: #set ($percent = $tool.math.mul($val, 100)) 870: <div class="progress mt-2 w-75"> 871: <div class="progress-bar bg-primary" role="progressbar" style="width: $formatter.formatNumber($percent, 1)%;" aria-valuenow="$formatter.formatNumber($percent, 1)" aria-valuemin="0" aria-valuemax="100"></div> 872: </div> 873: </div> 874: </li> 875: #end 876: 877: #macro (printEventCountdown) 878: ## NEXT EVENT COUNTDOWN 879: #if ($showEventCountdown) 880: 881: 882: #set ($currentDate = $now) 883: #set ($dateFormat = "MMM dd") 884: #set ($dayFormat = "EEEE") 885: 886: #set ($eventList = []) 887: 888: ## filter out exhibition events and count the number of previous and upcoming events 889: #foreach ($event in $schedule.events) 890: #if ($event.date && ($event.overall || !$hideExhibition) && !$event.cancelled && !$event.postponed) 891: #set ($eventServerDate = $tool.timeZone.shift($event.date, $event.localTimeZone, $tool.timeZone.systemTimeZone)) 892: #if (!$eventServerDate.before($currentDate)) 893: #set ($val = $eventList.add($event)) 894: #end 895: #end 896: #end 897: 898: #if ($eventList.size() > 0) 899: #printNextEventList($eventList) 900: $request.setAttribute("scheduleNextEvent", false) ## resetting this to false ensures the schedule will feature a next event if present. 901: #end 902: #end 903: #end 904: 905: #macro(eventDate $event) 906: ## conversion of a date into string and back to date sets the time to 00:00 907: #set ($today = $formatter.formatDate($now, "MMMM dd yyyy")) 908: #set ($today = $tool.date.format("MMMM dd yyyy", $today)) 909: #set ($date = $tool.date.format("MMMM dd yyyy", $event.date)) 910: #if($date.equals($today)) 911: Today 912: #else 913: $formatter.formatDate($event.date, "${dateFormat}") 914: #end 915: #end 916: 917: #macro (printTeamStats) 918: #if ($schedule.numericResults && $isTeamSchedule) 919: #set ($number = $schedule.Record.winPercentage) 920: #set ($confnumber = $schedule.conferenceRecord.winPercentage) 921: 922: <ul class="team-stats list-unstyled d-flex flex-wrap justify-content-center align-items-stretch border-top border-start"> 923: #printStat("Overall", $schedule.Record) 924: #printStatGraph("PCT", $number) 925: #printStat("Conf", $schedule.ConferenceRecord) 926: #printStatGraph("C.PCT", $confnumber) 927: #set ($streak = $schedule.streak.toString().replace('Lost ', '<span data-context="result">L</span>').replace('Won ', '<span data-context="result">W</span>')) 928: #printStat("Streak", $streak) 929: #printStat("Home", $schedule.homeRecord) 930: #printStat("Away", $schedule.awayRecord) 931: #printStat("Neutral", $schedule.neutralRecord) 932: </ul> ## team-stats 933: #end 934: #end ## printTeamStats 935: 936: #macro (liveEventIndicator) 937: <div class="next-event-header fw-bold d-flex align-items-center justify-content-start gap-2"> 938: <span class="fa fa-circle fa-sm fa-beat-fade text-primary" aria-hidden="true"></span> 939: <span>#printEventStatus($event)</span> 940: </div> 941: #end 942: 943: #macro (nextEventIndicator) 944: <div class="next-event-header fw-bold d-flex align-items-center justify-content-start gap-2"> 945: <span class="fa-regular fa-bell"></span> 946: <span class="text">Next Event</span> 947: </div> 948: #end 949: 950: #macro (printTeamEventForNextEvent $event) 951: <div class="card-header"> 952: <div class="next-event-header fw-bold d-flex align-items-center justify-content-center gap-2"> 953: <span class="text">Next Event</span> 954: </div> 955: </div> 956: <div class="card-body"> 957: <div class="d-flex flex-column justify-content-center align-items-center gap-2"> 958: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-3 w-100"> 959: <div class="text-start flex-grow-1 flex-shrink-1 w-100"> 960: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-2 gap-md-3"> 961: #if ($showTeamLogo && $event.opponent.teamId.length() > 0) 962: <div class="logo-aside-container"> 963: <div class="lac-placeholder bg-primary border rounded p-2"> 964: #printTeamLogoSetWidth($event.opponent, 72) 965: </div> 966: </div> 967: #end 968: <div class="flex-grow-1"> 969: <div class="d-flex flex-column align-items-center align-items-md-start justify-content-center gap-1"> 970: <div class="event-opponent d-flex align-items-center justify-content-center gap-2 fs-5"> 971: #printLocationIcon($event) 972: <span class="event-opponent-name mb-0 fw-bold align-middle">#printTeamName($event.opponent)</span> 973: #printNotations($event) 974: </div> 975: <div class="event-dateinfo"> 976: <div class="d-flex align-items-center justify-content-start gap-3"> 977: <div class="date d-flex align-items-center justify-content-center gap-1"> 978: <span class="fa fa-calendar-o fa-sm text-muted" aria-hidden="true"></span> 979: <span>#eventDate($event)</span> 980: </div> 981: <div class="status d-flex align-items-center justify-content-center gap-1"> 982: <span class="fa-regular fa-clock fa-sm text-muted" aria-hidden="true"></span> 983: <span>#printEventStatus($event)</span> 984: </div> 985: </div> 986: </div> 987: #if ($event.neutralSite.length() > 0) 988: <div class="event-neutralsite small text-muted text-center text-md-start">#printEventNeutralSite($event)</div> 989: #end 990: </div> 991: </div> 992: </div> 993: </div> 994: <div class="text-md-right flex-grow-1 flex-shrink-1 w-100"> 995: <div class="d-flex flex-column flex-md-row align-items-center flex-nowrap justify-content-end gap-3"> 996: #neCounter($event) 997: </div> 998: </div> 999: </div> 1000: <div class="details d-flex flex-wrap gap-3 align-items-center justify-content-center w-100"> 1001: #if ($event.notes.length() > 0) 1002: <div class="event-notes small text-muted text-center">#printEventNotes($event)</div> 1003: #end 1004: </div> 1005: </div> 1006: </div> 1007: #if($event.links.size() > 0) 1008: <div class="card-footer small"> 1009: <div class="event-controls d-flex flex-column flex-md-row align-items-md-center justify-content-center gap-3 "> 1010: <div class="event-links list-inline d-flex align-items-center justify-content-center gap-3 flex-wrap flex-grow-1"> 1011: #printEventCardLinks($event) 1012: </div> 1013: </div> 1014: </div> 1015: #end 1016: #end ## printTeamEventForNextEvent 1017: 1018: #macro (printConfEventForNextEvent $event) 1019: #set ($awayTeam = $event.teams.get(0)) 1020: #set ($homeTeam = $event.teams.get(1)) 1021: 1022: #set ($awayClass = "away") 1023: #set ($homeClass = "home") 1024: 1025: #if ($awayTeam.winner) 1026: #set ($awayClass = "${awayClass} winner") 1027: #set ($homeClass = "${homeClass} loser") 1028: #elseif ($homeTeam.winner) 1029: #set ($awayClass = "${awayClass} loser") 1030: #set ($homeClass = "${homeClass} winner") 1031: #end 1032: 1033: <div class="card-header"> 1034: <div class="next-event-header fw-bold d-flex align-items-center justify-content-center gap-2"> 1035: <span class="text">Next Event</span> 1036: </div> 1037: </div> 1038: <div class="card-body"> 1039: <div class="d-flex flex-column justify-content-center align-items-center gap-2"> 1040: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-3 w-100"> 1041: <div class="text-start flex-grow-1 w-100"> 1042: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-2 gap-md-3"> 1043: #if ($showTeamLogo && ($awayTeam.teamId.length() > 0 || $homeTeam.teamId.length() > 0)) 1044: <div class="logo-aside-container conference-logo"> 1045: <div class="d-flex flex-row flex-nowrap align-items-center justify-content-center gap-2"> 1046: #if ($awayTeam.teamId.length() > 0) 1047: <div class="lac-placeholder bg-primary border rounded p-2"> 1048: #printTeamLogoSetWidth($awayTeam, 84) 1049: </div> 1050: #end 1051: #if ($homeTeam.teamId.length() > 0) 1052: <div class="lac-placeholder bg-primary border rounded p-2"> 1053: #printTeamLogoSetWidth($homeTeam, 84) 1054: </div> 1055: #end 1056: </div> 1057: </div> 1058: #end 1059: 1060: <div class="flex-grow-1"> 1061: <div class="d-flex flex-column align-items-center align-items-md-start justify-content-center gap-1"> 1062: <div class="event-home-team d-flex flex-column align-items-center align-items-md-start justify-content-center justify-content-md-start gap-0 fs-5 w-100"> 1063: <div class="event-team-name away-team d-flex align-items-center justify-content-center gap-2"> 1064: <span class="event-opponent-name mb-0 fw-bold align-middle">#printTeamName($awayTeam)</span> 1065: </div> 1066: <div class="event-team-name home-team d-flex align-items-center justify-content-center justify-content-md-start gap-2"> 1067: #printLocationIcon($event) 1068: <span class="event-opponent-name mb-0 fw-bold align-middle">#printTeamName($homeTeam)</span> 1069: #printNotations($event) 1070: </div> 1071: </div> 1072: <div class="event-dateinfo"> 1073: <div class="d-flex align-items-center justify-content-start gap-3"> 1074: <div class="date d-flex align-items-center justify-content-center gap-1"> 1075: <span class="fa fa-calendar-o fa-sm text-muted" aria-hidden="true"></span> 1076: <span>#eventDate($event)</span> 1077: </div> 1078: <div class="status d-flex align-items-center justify-content-center gap-1"> 1079: <span class="fa-regular fa-clock fa-sm text-muted" aria-hidden="true"></span> 1080: <span>#printEventStatus($event)</span> 1081: </div> 1082: </div> 1083: </div> 1084: #if ($event.neutralSite.length() > 0) 1085: <div class="event-neutralsite small text-muted text-center text-md-start">#printEventNeutralSite($event)</div> 1086: #end 1087: </div> 1088: </div> 1089: </div> 1090: </div> 1091: <div class="text-md-right flex-grow-1 flex-shrink-1 w-100"> 1092: <div class="d-flex flex-column flex-md-row align-items-center flex-nowrap justify-content-end gap-3"> 1093: #neCounter($event) 1094: </div> 1095: </div> 1096: </div> 1097: <div class="details d-flex flex-wrap gap-3 align-items-center justify-content-center w-100"> 1098: #if ($event.notes.length() > 0) 1099: <div class="event-notes small text-muted text-center">#printEventNotes($event)</div> 1100: #end 1101: </div> 1102: </div> 1103: </div> 1104: #if($event.links.size() > 0 || $eventOverview) 1105: <div class="card-footer small"> 1106: <div class="event-controls d-flex flex-column flex-md-row align-items-md-center justify-content-center gap-3 "> 1107: <div class="event-links list-inline d-flex align-items-center justify-content-center gap-3 flex-wrap flex-grow-1"> 1108: #printEventCardLinks($event) 1109: </div> 1110: </div> 1111: </div> 1112: #end 1113: 1114: #end ## printConferenceEventForNextEvent 1115: 1116: #macro (printTeamEvent $event) 1117: #if ($eventClass.contains("schedule-next-event-indicator")) 1118: <div class="card-header"> 1119: #nextEventIndicator() 1120: </div> 1121: #elseif ($eventClass.contains("in-progress")) 1122: <div class="card-header"> 1123: #liveEventIndicator() 1124: </div> 1125: #end 1126: #if($eventClass.contains("has-recap")) 1127: #set ($eventOverview = true) 1128: #end 1129: <div class="card-body"> 1130: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-3"> 1131: <div class="text-start flex-grow-1 flex-shrink-1 w-100"> 1132: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-2"> 1133: #if ($showTeamLogo && $event.opponent.teamId.length() > 0) 1134: <div class="logo-aside-container"> 1135: #printTeamLogoSetWidth($event.opponent, 72) 1136: </div> 1137: #end 1138: <div class="flex-grow-1"> 1139: <div class="d-flex flex-column align-items-center align-items-md-start justify-content-center gap-2"> 1140: <div class="event-opponent d-flex align-items-center justify-content-center gap-2 fs-5"> 1141: #printLocationIcon($event) 1142: <span class="event-opponent-name mb-0 #if(($event.home && $event.neutralSite.length() == 0) && $isTeamSchedule)fw-bold#end align-middle">#printTeamName($event.opponent)</span> 1143: #printNotations($event) 1144: </div> 1145: <div class="event-dateinfo"> 1146: <div class="d-flex align-items-center justify-content-start gap-3"> 1147: <div class="date d-flex align-items-center justify-content-center gap-1"> 1148: <span class="fa fa-calendar-o fa-sm text-muted" aria-hidden="true"></span> 1149: <span>#eventDate($event)</span> 1150: </div> 1151: <div class="status d-flex align-items-center justify-content-center gap-1"> 1152: <span class="fa-regular fa-clock fa-sm text-muted" aria-hidden="true"></span> 1153: <span>#printEventStatus($event)</span> 1154: </div> 1155: </div> 1156: </div> 1157: #if ($event.neutralSite.length() > 0) 1158: <div class="event-neutralsite small text-muted text-center text-md-start">#printEventNeutralSite($event)</div> 1159: #end 1160: </div> 1161: </div> 1162: </div> 1163: </div> 1164: <div class="text-md-right flex-grow-1 flex-shrink-1 w-100"> 1165: <div class="d-flex flex-column flex-md-row align-items-center flex-nowrap justify-content-end gap-3"> 1166: ## Link Processing 1167: #set($boxscoreURL = "") 1168: #foreach ($link in $event.links) 1169: #if ($link.url.endsWith(".xml") && $link.mapType == "BS" && !$website.isExternalLink($link.url)) 1170: #set($boxscoreURL = $link.url) 1171: #end 1172: #end 1173: #if($leaderSportsMapped.contains($sport.replace("women's ", "").replace("men's ", ""))) 1174: #if ($showLeaders && $rosterHeadshots.size() > 0 && ($boxscoreURL.length() > 0)) 1175: <div class="text-md-center"> 1176: <div class="game-leaders d-none d-md-flex align-items-center justify-content-start"> 1177: $website.include("${boxscoreURL}?tmpl=schedule-game-leaders-template&teamId=${schedule.teamId}") 1178: </div> 1179: </div> 1180: #end 1181: #end 1182: <div class="text-md-center flex-grow-1"> 1183: <div class="d-flex flex-column align-items-center align-items-md-end justify-content-center gap-1"> 1184: <div class="event-result fw-bold text-nowrap fs-5">#printAPResult($event)</div> 1185: <div class="details d-flex flex-wrap gap-3 align-items-center justify-content-center justify-content-md-start"> 1186: <div class="event-notes small text-muted text-center text-md-end">#printEventNotes($event)</div> 1187: </div> 1188: </div> 1189: </div> 1190: </div> 1191: </div> 1192: </div> 1193: </div> 1194: #if($event.links.size() > 0 || $eventOverview) 1195: <div class="card-footer small"> 1196: <div class="event-controls d-flex flex-column flex-md-row align-items-md-center justify-content-center gap-3 "> 1197: <div class="event-links list-inline d-flex align-items-center justify-content-center justify-content-md-start gap-3 flex-wrap flex-grow-1"> 1198: #printEventCardLinks($event) 1199: </div> 1200: #if($eventOverview) 1201: <div class="event-overview d-none d-md-flex overflow-hidden border-start me-n3 mt-n2 mb-n2"> 1202: <a class="btn d-block btn-link event-overview-toggle w-100" aria-label="Event Overview"><span class="fa-regular fa-plus"></span></a> 1203: </div> 1204: #end 1205: </div> 1206: </div> 1207: #end 1208: 1209: #end ## printTeamEvent 1210: 1211: #macro (printConfEvent $event) 1212: #set ($awayTeam = $event.teams.get(0)) 1213: #set ($homeTeam = $event.teams.get(1)) 1214: 1215: #set ($awayClass = "away") 1216: #set ($homeClass = "home") 1217: 1218: #if ($awayTeam.winner) 1219: #set ($awayClass = "${awayClass} winner") 1220: #set ($homeClass = "${homeClass} loser") 1221: #elseif ($homeTeam.winner) 1222: #set ($awayClass = "${awayClass} loser") 1223: #set ($homeClass = "${homeClass} winner") 1224: #end 1225: 1226: #if ($eventClass.contains("schedule-next-event-indicator")) 1227: <div class="card-header"> 1228: #nextEventIndicator() 1229: </div> 1230: #elseif ($eventClass.contains("in-progress")) 1231: <div class="card-header"> 1232: #liveEventIndicator() 1233: </div> 1234: #end 1235: 1236: #if($eventClass.contains("has-recap")) 1237: #set ($eventOverview = true) 1238: #end 1239: 1240: <div class="card-body"> 1241: <div class="d-flex flex-column flex-md-row justify-content-center align-items-center gap-3"> 1242: <div class="text-start flex-grow-1 w-100"> 1243: <div class="d-flex flex-row justify-content-center align-items-center gap-2 #if($awayTeam.winner) fw-bold #end"> 1244: #if ($showTeamLogo && $awayTeam.teamId.length() > 0) 1245: <div class="logo-aside-container"> 1246: #printTeamLogoSetWidth($awayTeam, 40) 1247: </div> 1248: #end 1249: <div class="flex-grow-1 text-start"> 1250: <div class="d-flex flex-column align-items-start justify-content-center gap-1"> 1251: <div class="event-team-name away-team d-flex align-items-center justify-content-center gap-2"> 1252: <span class="event-opponent-name mb-0 align-middle">#printTeamName($awayTeam)</span> 1253: #printNotations($event) 1254: </div> 1255: </div> 1256: </div> 1257: <div class="flex-shrink-1"> 1258: #if($awayTeam.winner)<span class="fa-solid fa-sm fa-caret-right"></span>#end ${awayTeam.result} 1259: </div> 1260: </div> 1261: <div class="d-flex flex-row justify-content-center align-items-center gap-2 #if($homeTeam.winner) fw-bold #end"> 1262: #if ($showTeamLogo && $homeTeam.teamId.length() > 0) 1263: <div class="logo-aside-container"> 1264: #printTeamLogoSetWidth($homeTeam, 40) 1265: </div> 1266: #end 1267: <div class="flex-grow-1 text-start"> 1268: <div class="d-flex flex-column align-items-start justify-content-centergap-1"> 1269: <div class="event-team-name home-team d-flex align-items-center justify-content-center gap-2"> 1270: <span class="event-opponent-name mb-0 align-middle">#printTeamName($homeTeam)</span> 1271: #printNotations($event) 1272: </div> 1273: </div> 1274: </div> 1275: <div class="flex-shrink-1"> 1276: #if($homeTeam.winner)<span class="fa-solid fa-sm fa-caret-right"></span>#end ${homeTeam.result} 1277: </div> 1278: </div> 1279: </div> 1280: <div class="text-md-right flex-shrink-1 col-md-6 col-lg-4"> 1281: <div class="d-flex flex-column align-items-center align-items-md-end justify-content-center gap-1 text-center text-md-end"> 1282: <div class="event-dateinfo"> 1283: <div class="d-flex flex-column align-items-center justify-content-start align-items-lg-end justify-content-lg-end gap-2"> 1284: <div class="date d-flex align-items-center justify-content-center gap-1"> 1285: <span class="fa fa-calendar-o fa-sm text-muted" aria-hidden="true"></span> 1286: <span>#eventDate($event)</span> 1287: </div> 1288: <div class="status d-flex align-items-center justify-content-center gap-1"> 1289: <span class="fa-regular fa-clock fa-sm text-muted" aria-hidden="true"></span> 1290: <span>#printEventStatus($event)</span> 1291: </div> 1292: </div> 1293: </div> 1294: #if ($event.neutralSite.length() > 0) 1295: <div class="event-neutralsite small text-muted text-center text-md-end">#printEventNeutralSite($event)</div> 1296: #end 1297: <div class="details d-flex flex-wrap gap-3 align-items-center justify-content-center justify-content-md-start"> 1298: <div class="event-notes small text-muted text-center text-md-end">#printEventNotes($event)</div> 1299: </div> 1300: #if($leaderSportsMapped.contains($sport.replace("women's ", "").replace("men's ", ""))) 1301: #if ($showLeaders && $rosterHeadshots.size() > 0 && ($boxscoreURL.length() > 0)) 1302: <div class="game-leaders d-none d-md-flex align-items-center justify-content-center justify-content-lg-end"> 1303: $website.include("${boxscoreURL}?tmpl=schedule-game-leaders-template&teamId=${schedule.teamId}") 1304: </div> 1305: #end 1306: #end 1307: </div> 1308: </div> 1309: </div> 1310: </div> 1311: #if($event.links.size() > 0 || $eventOverview) 1312: <div class="card-footer small"> 1313: <div class="event-controls d-flex flex-column flex-md-row align-items-md-center justify-content-center gap-3 "> 1314: <div class="event-links list-inline d-flex align-items-center justify-content-center justify-content-md-start gap-3 flex-wrap flex-grow-1"> 1315: #printEventCardLinks($event) 1316: </div> 1317: #if($eventOverview) 1318: <div class="event-overview d-none d-md-flex overflow-hidden border-start me-n3 mt-n2 mb-n2"> 1319: <a class="btn d-block btn-link event-overview-toggle w-100" aria-label="Event Overview"><span class="fa-regular fa-plus"></span></a> 1320: </div> 1321: #end 1322: </div> 1323: </div> 1324: #end 1325: 1326: #end ## printConferenceEvent 1327: 1328: #macro (printLocationIcon $event) 1329: #if ($event.neutralSite.length() > 0 || $event.home) 1330: <span class="event-location-badge m-0 align-middle text-muted small">vs</span> 1331: #else 1332: <span class="event-location-badge m-0 align-middle text-muted small">at</span> 1333: #end 1334: #end 1335: 1336: #macro(buildEventClass $event) 1337: #set($class = "event-row") 1338: 1339: ## Location 1340: #if ($event.neutralSite.length() > 0) 1341: #set($class = "${class} neutral") 1342: #elseif ($event.home) 1343: #set($class = "${class} home") 1344: #else 1345: #set($class = "${class} away") 1346: #end 1347: 1348: ## Metadata Flags 1349: #if ($event.inProgress) 1350: #set($class = "${class} in-progress") 1351: #end 1352: #if ($event.conference) 1353: #set($class = "${class} conf") 1354: #end 1355: #if ($event.postseason) 1356: #set($class = "${class} postseason") 1357: #end 1358: #if ($event.division) 1359: #set($class = "${class} division") 1360: #end 1361: #if (!$event.overall) 1362: #set($class = "${class} exhibition") 1363: #end 1364: 1365: ## Schedule Status 1366: #if ($event.statusCode < 0 && !$event.inProgress) 1367: #if ($event.date && !$event.date.before($now)) 1368: #if (!$request.getAttribute("scheduleNextEvent")) 1369: #set($class = "${class} upcoming schedule-next-event-indicator") 1370: $request.setAttribute("scheduleNextEvent", true) 1371: #else 1372: #set($class = "${class} upcoming") 1373: #end 1374: #end 1375: #else 1376: #set($class = "${class} result") 1377: #end 1378: 1379: ## Link Processing 1380: #set($boxscoreURL = "") 1381: #set($recapURL = "") 1382: #foreach ($link in $event.links) 1383: #if ($link.url.endsWith(".xml") && $link.mapType == "BS" && !$website.isExternalLink($link.url)) 1384: #set($boxscoreURL = $link.url) 1385: #elseif ($link.mapType == "RC" && !$website.isExternalLink($link.url)) 1386: #set($recapURL = $link.url) 1387: #end 1388: #end 1389: 1390: #if (($boxscoreURL && $boxscoreURL.length() > 0) || ($recapURL && $recapURL.length() > 0)) 1391: #set($class = "${class} has-recap") 1392: #end 1393: 1394: #if ($recapURL && $recapURL.length() > 0) 1395: #set($class = "${class} has-links") 1396: #end 1397: $request.setAttribute("eventClass", $class) 1398: #end 1399: 1400: #macro (printEvents $evt $border) 1401: #if(!$border) 1402: #set($border = false) 1403: #end 1404: 1405: #if ($enhancedLayout) 1406: #printCards($evt, $border) 1407: #else 1408: #printTable($evt, $border) 1409: #end 1410: #end 1411: 1412: #macro (printCollapsibleMonths $evts) 1413: #set ($lastDate = "") 1414: #set ($lastTournament = "") 1415: #set ($eventsByMonth = {}) 1416: 1417: ## Group events by month 1418: #foreach($event in $evts) 1419: #set($monthKey = $formatter.formatDate($event.date, "MMMM")) 1420: #if (!$eventsByMonth.containsKey($monthKey)) 1421: #set($discard = $eventsByMonth.put($monthKey, [])) 1422: #end 1423: #set($discard = $eventsByMonth.get($monthKey).add($event)) 1424: #end 1425: 1426: ## Sort months chronologically 1427: #set($monthOrder = []) 1428: #foreach($monthName in $eventsByMonth.keySet()) 1429: #set($firstEventDate = $eventsByMonth.get($monthName).get(0).date) 1430: #set($eventYear = $formatter.formatDate($firstEventDate, "yyyy")) 1431: #set($dateString = "1 $monthName $eventYear") 1432: #set($monthDate = $dateTool.get($dateString)) 1433: #set($discard = $monthOrder.add({"name": $monthName, "date": $monthDate})) 1434: #end 1435: #set($monthOrder = $tool.sorter.sort($monthOrder, "date")) 1436: 1437: ## Prepare output ordering 1438: #set($outputMonthOrder = []) 1439: #set($expandMonth = "") 1440: #set($currentMonthName = $formatter.formatDate($now, "MMMM")) 1441: #set($currentYear = $formatter.formatDate($now, "yyyy")) 1442: #set($currentMonthDate = $dateTool.get("1 $currentMonthName $currentYear")) 1443: 1444: #if($currentMonthFirst) 1445: #set($mostRecent = {}) 1446: #set($found = false) 1447: #foreach($m in $monthOrder) 1448: #if(!$found) 1449: #foreach($e in $eventsByMonth.get($m.name)) 1450: #if($e.date.after($now) || $e.date.equals($now)) 1451: #set($mostRecent = $m) 1452: #set($expandMonth = $m.name) 1453: #set($found = true) 1454: #break 1455: #end 1456: #end 1457: #end 1458: #end 1459: 1460: ## If no upcoming/current event found, fall back to last month safely 1461: #if(!$found) 1462: #set($mostRecent = {}) 1463: #foreach($m in $monthOrder) 1464: #set($mostRecent = $m) 1465: #end 1466: #if($mostRecent.name) 1467: #set($expandMonth = $mostRecent.name) 1468: #end 1469: #end 1470: 1471: ## Add most recent month first 1472: #if($mostRecent.name) 1473: #set($discard = $outputMonthOrder.add($mostRecent)) 1474: #end 1475: 1476: ## Add Completed Marker only before first past month 1477: #set($addedCompletedMarker = false) 1478: #foreach($m in $monthOrder) 1479: #if($m.name != $mostRecent.name) 1480: #set($monthEvents = $eventsByMonth.get($m.name)) 1481: #set($monthStatus = "month-past") 1482: #foreach($e in $monthEvents) 1483: #if($e.date.after($now)) 1484: #set($monthStatus = "month-upcoming") 1485: #break 1486: #elseif($e.date.equals($now)) 1487: #set($monthStatus = "month-current") 1488: #break 1489: #end 1490: #end 1491: #if(!$addedCompletedMarker && $monthStatus == "month-past") 1492: #set($discard = $outputMonthOrder.add({"name": "COMPLETED_MARKER"})) 1493: #set($addedCompletedMarker = true) 1494: #end 1495: #set($discard = $outputMonthOrder.add($m)) 1496: #end 1497: #end 1498: #else 1499: ## Normal chronological list (currentMonthFirst = false) 1500: #set($addedCompletedMarker = false) 1501: #set($foundCurrentOrUpcoming = false) 1502: #foreach($m in $monthOrder) 1503: #set($monthEvents = $eventsByMonth.get($m.name)) 1504: #set($monthStatus = "month-past") 1505: #foreach($e in $monthEvents) 1506: #if($e.date.after($now)) 1507: #set($monthStatus = "month-upcoming") 1508: #set($foundCurrentOrUpcoming = true) 1509: #break 1510: #elseif($e.date.equals($now)) 1511: #set($monthStatus = "month-current") 1512: #set($foundCurrentOrUpcoming = true) 1513: #break 1514: #end 1515: #end 1516: #if(!$addedCompletedMarker && $monthStatus == "month-past") 1517: #set($discard = $outputMonthOrder.add({"name": "COMPLETED_MARKER"})) 1518: #set($addedCompletedMarker = true) 1519: #end 1520: #set($discard = $outputMonthOrder.add($m)) 1521: #end 1522: 1523: ## Decide which month to expand: first upcoming/current or fallback to last past 1524: #set($expandMonth = "") 1525: #set($foundExpand = false) 1526: #foreach($m in $monthOrder) 1527: #set($monthEvents = $eventsByMonth.get($m.name)) 1528: #set($monthStatus = "month-past") 1529: #foreach($e in $monthEvents) 1530: #if($e.date.after($now)) 1531: #set($monthStatus = "month-upcoming") 1532: #break 1533: #elseif($e.date.equals($now)) 1534: #set($monthStatus = "month-current") 1535: #break 1536: #end 1537: #end 1538: #if(!$foundExpand && ($monthStatus == "month-current" || $monthStatus == "month-upcoming")) 1539: #set($expandMonth = $m.name) 1540: #set($foundExpand = true) 1541: #end 1542: #end 1543: ## If none found (all past), expand last month 1544: #if(!$foundExpand && $monthOrder.size() > 0) 1545: #set($lastMonth = {}) 1546: #foreach($m in $monthOrder) 1547: #set($lastMonth = $m) 1548: #end 1549: #if($lastMonth.name) 1550: #set($expandMonth = $lastMonth.name) 1551: #end 1552: #end 1553: #end 1554: 1555: #foreach($m in $outputMonthOrder) 1556: #if($m.name == "COMPLETED_MARKER") 1557: #if($currentMonthFirst) 1558: <div class="completed-months-heading small text-muted rounded text-center"> 1559: <span class="fa-solid fa-sm fa-dash"></span> Previous Months <span class="fa-solid fa-sm fa-dash"></span> 1560: </div> 1561: #end 1562: #else 1563: #set($month = $m.name) 1564: #set($monthEvents = $eventsByMonth.get($month)) 1565: #set($eventCount = $monthEvents.size()) 1566: #set($isExpanded = false) 1567: #if($month == $expandMonth || $isPrinterFriendly) 1568: #set($isExpanded = true) 1569: #end 1570: 1571: #set($collapseClass = "") 1572: #set($ariaExpanded = "false") 1573: #if($isExpanded) 1574: #set($collapseClass = "show") 1575: #set($ariaExpanded = "true") 1576: #end 1577: 1578: ## Determine month status 1579: #set($monthStatus = "month-past") 1580: #foreach($e in $monthEvents) 1581: #if($e.date.after($now)) 1582: #set($monthStatus = "month-upcoming") 1583: #break 1584: #elseif($e.date.equals($now)) 1585: #set($monthStatus = "month-current") 1586: #break 1587: #end 1588: #end 1589: 1590: <div class="section-event-month $month.toLowerCase() $monthStatus"> 1591: <a class="toggle-month text-decoration-none" aria-label="Open/Close $month Calendar" data-bs-toggle="collapse" href="#$month.toLowerCase()-collapse" role="button" aria-expanded="$ariaExpanded" aria-controls="$month.toLowerCase()-collapse"> 1592: <span class="d-block section-header rounded text-white bg-primary p-2 px-3 position-relative"> 1593: <span class="d-flex flex-row justify-content-start justify-content-between gap-3"> 1594: <span class="month-heading flex-grow-1 fw-bold"> 1595: <span class="month-title">$month</span> 1596: </span> 1597: <span class="month-heading-control flex-shrink-1 small"> 1598: <span class="month-count small">$eventCount event#if($eventCount > 1)s#end</span> 1599: </span> 1600: <span class="toggle-month-indicator opacity-3"> 1601: <span class="fa fa-solid fa-sm fa-chevron-up"></span> 1602: </span> 1603: </span> 1604: </span> 1605: </a> 1606: <div class="collapse navbar-collapse $collapseClass" id="$month.toLowerCase()-collapse"> 1607: <div class="event-month-list d-flex flex-column gap-3 mt-3"> 1608: #if ($groupDates) 1609: #printCollapsibleDates($monthEvents, true) 1610: #else 1611: #printEvents($monthEvents, true) 1612: #end 1613: </div> 1614: </div> 1615: </div> 1616: #end 1617: #end 1618: 1619: #end 1620: 1621: 1622: #macro (printCollapsibleDates $evt, $border) 1623: #if(!$border) 1624: #set($border = false) 1625: #end 1626: ## GROUP EVENTS BY MONTH 1627: #set($eventsByDate = {}) 1628: #foreach($event in $evt) 1629: #set($dateKey = $formatter.formatDate($event.date, "${dateFormat}")) 1630: #if (!$eventsByDate.containsKey($dateKey)) 1631: #set($eval = $eventsByDate.put($dateKey, [])) 1632: #end 1633: #set($eval = $eventsByDate.get($dateKey).add($event)) 1634: #end 1635: 1636: <div class="section-event-group-dates d-flex flex-column gap-3"> 1637: #foreach($date in $eventsByDate.keySet()) 1638: #set($dateEvents = $eventsByDate.get($date)) 1639: #set($eventCount = $dateEvents.size()) 1640: 1641: <div class="card #if($groupDates)border-0 rounded-0#end section-event-date" data-date="$date"> 1642: <div class="card-header px-2"> 1643: <div class="d-flex flex-row justify-content-start justify-content-between"> 1644: <div class="date-heading flex-grow-1"> 1645: <div class="d-flex align-items-center justify-content-start gap-2"> 1646: <span class="fa fa-calendar-o fa-sm text-muted" aria-hidden="true"></span> 1647: <span class="date-title fw-bold">$date</span> 1648: </div> 1649: </div> 1650: <div class="date-heading-control flex-shrink-1 small"> 1651: <span class="date-count small opacity-75">$eventCount event#if($eventCount > 1)s#end</span> 1652: </div> 1653: </div> 1654: </div> 1655: <div class="card-body event-date-list #if($groupDates)px-0 rounded-0#end"> 1656: <div class="d-flex align-items-center justify-content-center gap-3 flex-column"> 1657: #printEvents($dateEvents, $border) 1658: </div> 1659: </div> 1660: </div> 1661: #end 1662: </div> 1663: #end 1664: 1665: #macro (printTableDateCards $evt) 1666: 1667: ## GROUP EVENTS BY MONTH 1668: #set($eventsByDate = {}) 1669: #foreach($event in $evt) 1670: #set($dateKey = $formatter.formatDate($event.date, "${dateFormat}")) 1671: #if (!$eventsByDate.containsKey($dateKey)) 1672: #set($eval = $eventsByDate.put($dateKey, [])) 1673: #end 1674: #set($eval = $eventsByDate.get($dateKey).add($event)) 1675: #end 1676: 1677: <div class="section-event-group-dates d-flex flex-column gap-3"> 1678: #foreach($date in $eventsByDate.keySet()) 1679: #set($dateEvents = $eventsByDate.get($date)) 1680: #set($eventCount = $dateEvents.size()) 1681: 1682: <div class="card border section-event-date" data-date="$date"> 1683: <div class="card-header px-2"> 1684: <div class="d-flex flex-row justify-content-start justify-content-between"> 1685: <div class="date-heading flex-grow-1"> 1686: <div class="d-flex align-items-center justify-content-start gap-2"> 1687: <span class="fa fa-calendar-o fa-sm text-muted" aria-hidden="true"></span> 1688: <span class="date-title fw-bold">$date</span> 1689: </div> 1690: </div> 1691: <div class="date-heading-control flex-shrink-1 small"> 1692: <span class="date-count small opacity-75">$eventCount event#if($eventCount > 1)s#end</span> 1693: </div> 1694: </div> 1695: </div> 1696: <div class="card-body event-date-list"> 1697: #printTable($dateEvents) 1698: </div> 1699: </div> 1700: #end 1701: </div> 1702: #end 1703: 1704: #macro (printNextEventList $evt) 1705: #if ($evt.size() > 0) 1706: #set ($eventObject = {}) 1707: #set ($eventList = $tool.sorter.sort($evt, "date")) 1708: #set ($val = $eventObject.put('nextevent', $evt.get(0))) 1709: <div class="nextevent-list d-flex flex-column gap-3 d-print-none"> 1710: #foreach($event in $eventObject) 1711: #buildEventClass($event) 1712: #set($eventClass = $request.getAttribute("eventClass")) 1713: 1714: #printNextEventCard($evt) 1715: #end 1716: </div> 1717: #end 1718: #end 1719: 1720: #macro (printNextEventCard $evt) 1721: <div class="card w-100 ${eventClass} bg-primary text-white" #printBoxscoreRecapUrl($event)> 1722: #if ($isTeamSchedule || $event.teams.size() == 1) 1723: #printTeamEventForNextEvent($event) 1724: #elseif ($event.teams.size() == 2) ## conference schedule with head-to-head events 1725: #printConfEventForNextEvent($event) 1726: #end 1727: </div> 1728: #end 1729: 1730: #macro (printCards $evt $border) 1731: #foreach($event in $evt) 1732: 1733: #if ($isTeamSchedule) 1734: #set ($theDate = $formatter.formatDate($event.date, "MMMM")) 1735: #else 1736: #set ($theDate = $formatter.formatDate($event.date, "EEEE, MMMM dd, yyyy")) 1737: #end 1738: 1739: #if (!$lastDate.equals($theDate)) 1740: #set ($lastTournament = "") ## force clear of tournament name being held because the month/date needs to be closed as well. 1741: #end 1742: #set ($lastDate = $theDate) 1743: 1744: #if($schedule.includeTournamentLabels) 1745: #if($!schedule.tournamentEvent.get($event.eventId)) 1746: #if($lastTournament.length() > 0 && $schedule.tournamentEvent.get($event.eventId) != $lastTournament) 1747: </div> ## CLEAR PREVIOUS TOURNAMENT IS THIS TOURNAMENT IS DIFFERENT 1748: #set ($lastTournament = "") 1749: #end 1750: 1751: #if($lastTournament.length() == 0 || !$lastTournament.equals($schedule.tournamentEvent.get($event.eventId))) 1752: <div class="event-group-tournament d-flex flex-column gap-3 pb-3 border-5 border-secondary"> 1753: #end 1754: 1755: #if(!$lastTournament.equals($schedule.tournamentEvent.get($event.eventId))) 1756: <div class="event-tournament section-tournament-header rounded text-white bg-secondary p-2 px-3">$schedule.tournamentEvent.get($event.eventId)</div> 1757: #end 1758: 1759: #set ($lastTournament = $schedule.tournamentEvent.get($event.eventId)) 1760: #else 1761: #if($lastTournament.length() > 0) 1762: </div> ## must close all open tournament div if next event is not part of a tournament 1763: #set ($lastTournament = "") 1764: #end 1765: #end 1766: #end 1767: 1768: #buildEventClass($event) 1769: #set($eventClass = $request.getAttribute("eventClass")) 1770: 1771: #set ($sport = $event.sport.toLowerCase()) 1772: #if ($showLeaders && $rosterHeadshots.size() > 0 && $leaderSportsMapped.contains($sport.replace("women's ", "").replace("men's ", ""))) 1773: #set ($eventClass = "${eventClass} has-leaders") 1774: #else 1775: #set ($eventClass = "${eventClass} no-leaders") 1776: #end 1777: 1778: <div class="card w-100 ${eventClass}" #printBoxscoreRecapUrl($event)> 1779: #if ($isTeamSchedule || $event.teams.size() == 1) 1780: #printTeamEvent($event) 1781: #elseif ($event.teams.size() == 2) ## conference schedule with head-to-head events 1782: #printConfEvent($event) 1783: #end 1784: </div> 1785: 1786: #if($schedule.includeTournamentLabels) 1787: #if($foreach.last && $lastTournament.length() > 0) </div> #end 1788: #end 1789: #end 1790: #end 1791: 1792: 1793: #macro (printTable $evt) 1794: $request.setAttribute("icl-dataTables-script", true) 1795: 1796: <div class="table-responsive table-responsive-via-datatables mb-3 w-100"> 1797: <table class="table ${tableHelperClass} small w-100"> 1798: <thead> 1799: <tr> 1800: #set ($colCount = 0) 1801: #foreach ($label in $scheduleLabels) 1802: #set ($class = "") 1803: #if($label.toLowerCase().contains("date")) 1804: #set ($class = "${class} table-active") 1805: #elseif($label.toLowerCase().contains("away") || $label.toLowerCase().contains("home")) 1806: #set ($class = "${class} col-12 col-md-4 col-lg-3 w-25") 1807: #elseif($label.toLowerCase().contains("opponent") || $label.toLowerCase().contains("opponent+neutralsite")) 1808: #set ($class = "${class} col-12 col-md-4 col-lg-3 w-25") 1809: #elseif($label.toLowerCase().contains("links")) 1810: #set ($class = "${class} col-12 col-md-4 col-lg-3 w-25") 1811: #elseif($label.toLowerCase().contains("notes")) 1812: #set ($class = "${class} col-12 col-md-4 col-lg-3 w-25") 1813: #elseif($label.toLowerCase().contains("status")) 1814: #set ($class = "${class} w-1") 1815: #end 1816: #if (!$tool.list.get($scheduleFields, $tool.math.sub($velocityCount, 1)).startsWith("_")) 1817: <th class="${class}" data-field-name="${label.toLowerCase()}">$label</th> 1818: #set ($colCount = $colCount + 1) 1819: #end 1820: #end 1821: </tr> 1822: </thead> 1823: #set ($lastdate = "") 1824: #set ($lastMonth = "") 1825: #set ($counter = 0) 1826: <tbody class="event-group"> 1827: #foreach ($event in $evt) 1828: #set ($formattedDate = $formatter.formatDate($event.date, $dateFormat)) 1829: #set ($theDate = $formatter.formatDate($event.date, "MMMM dd yyyy")) 1830: #set ($theMonth = $formatter.formatDate($event.date, "MMMM")) 1831: 1832: #set ($counter = $counter + 1) 1833: 1834: #buildEventClass($event) 1835: #set($eventClass = $request.getAttribute("eventClass")) 1836: 1837: #if ($scheduleFields.contains("_date") && !$lastDate.equals($theDate)) 1838: <tr class="${eventClass} date-title"><td colspan="${colCount}">$formattedDate</td></tr> 1839: 1840: ## EVENTS ARE GROUPED WHEN HERE SO RESET COUNTER BACK TO 0 1841: #set ($counter = 0) 1842: #end 1843: 1844: 1845: <tr class="${eventClass}" #if ($event.inProgress) title="In Progress" #end> 1846: #foreach ($field in $scheduleFields) 1847: 1848: ## DATE 1849: #if ($field.equals("date")) 1850: <td class="date w-1 table-active align-middle #if ($event.home) fw-bold #end"> 1851: <div class="nowrap d-block"> 1852: #if (!$lastDate.equals($theDate)) $formattedDate #else #end 1853: </div> 1854: </td> 1855: #end 1856: 1857: ## OPPONENT 1858: #if ($field.equals("opponent") || $field.equals("opponent+neutralsite")) 1859: <td class="team opponent align-middle text-center text-lg-start"> 1860: <div class="team-opponent-wrapper d-flex flex-column align-items-center justify-content-center align-items-lg-start justify-content-lg-start gap-0"> 1861: <div class="w-100 d-flex flex-column flex-lg-row align-items-center align-items-lg-center justify-content-center justify-content-lg-start gap-1"> 1862: #printTeamLogoSetWidth($event.opponent, 32) 1863: <div class="flex-grow-1"> 1864: #if ($showVsAt) 1865: #printLocationIcon($event) 1866: #end 1867: <span class="#if ($event.home) fw-bold #end">#printTeamName($event.opponent)</span> 1868: </div> 1869: </div> 1870: #if ($field.equals("opponent+neutralsite") && $event.neutralSite.length() > 0) 1871: <span class="neutralsite text-muted small">@ $event.neutralSite</span> 1872: #end 1873: 1874: #if ($eventClass.contains("next") && $groupMonths.equals(true)) 1875: <span class="event-location-badge badge bg-dark m-0 me-1 align-middle nowrap small"> 1876: <span class="fa-solid fa-bullhorn fw-normal" aria-hidden="true"></span> <span class="fw-normal">Next Event</span> 1877: </span> 1878: #end 1879: </div> 1880: </td> 1881: #end 1882: 1883: ## RESULT 1884: #if ($field.equals("result") || $field.equals("result+status")) 1885: <td class="result align-middle #if($event.home) fw-bold #end"> 1886: <div class="d-flex align-items-center justify-content-center justify-content-lg-between gap-2 flex-nowrap w-100"> 1887: <span class="text-nowrap">#printAPResult($event)</span> 1888: #if ($field.equals("result+status")) 1889: #if ($eventClass.contains("in-progress")) 1890: <span class="fa fa-circle fa-sm fa-beat-fade text-primary" aria-hidden="true"></span> 1891: #end 1892: <span class="text-nowrap #if ($event.home) fw-bold #end">#printEventStatus($event)</span> 1893: #end 1894: </div> 1895: </td> 1896: #end 1897: 1898: ## TEAM AWAY 1899: #if ($field.equals("team_away") || $field.equals("team_away+team_away_result")) 1900: #set ($class = "team awayteam align-middle ") 1901: #if ($field.equals("team_away+team_away_result")) 1902: #set ($class = "${class} teamresult") 1903: #end 1904: <td class="$class"> 1905: #if ($event.teams.size() > 0) 1906: #set ($awayTeam = $event.teams.get(0)) 1907: <div class="d-flex align-items-center justify-content-center justify-content-md-start gap-2 flex-nowrap #if ($awayTeam.winner) fw-bold #end"> 1908: #printTeamLogoSetWidth($awayTeam, 32) 1909: <span class="flex-grow-1">#printTeamName($awayTeam)</span> 1910: 1911: #if ($field.equals("team_away+team_away_result") && $awayTeam.result.length() > 0) 1912: #if ($awayTeam.winner) 1913: <span class="result winner"><span class="fa-solid fa-sm fa-caret-right" aria-hidden="true"></span> $awayTeam.result</span> 1914: #else 1915: <span class="result">$awayTeam.result</span> 1916: #end 1917: #end 1918: </div> 1919: #else 1920: 1921: #end 1922: </td> 1923: #end 1924: 1925: ## TEAM AWAY RESULT 1926: #if ($field.equals("team_away_result")) 1927: #set ($class = "e_result align-middle e_awayresult") 1928: #if ($event.teams.size() > 0 && $event.teams.get(0).winner) 1929: #set ($class = "${class} winner") 1930: #end 1931: <td class="${class}"> 1932: #if ($event.teams.size() > 0 && $event.teams.get(0).result.length() > 0) 1933: <span class="text-nowrap #if ($event.teams.get(0).winner) fw-bold #end"> 1934: #if ($event.teams.get(0).winner) <span class="fa-solid fa-sm fa-caret-right" aria-hidden="true"></span> #end 1935: $event.teams.get(0).result 1936: </span> 1937: #else 1938: #end 1939: </td> 1940: #end 1941: 1942: ## TEAM HOME 1943: #if ($field.equals("team_home") || $field.equals("team_home+team_home_result")) 1944: #set ($class = "team align-middle hometeam") 1945: #if ($field.equals("team_home+team_home_result")) 1946: #set ($class = "${class} teamresult") 1947: #end 1948: <td class="$class"> 1949: #if ($event.teams.size() > 1) 1950: #set ($homeTeam = $event.teams.get(1)) 1951: <div class="d-flex align-items-center justify-content-center justify-content-md-start gap-2 flex-nowrap #if ($homeTeam.winner) fw-bold #end"> 1952: #printTeamLogoSetWidth($homeTeam, 32) 1953: <span class="flex-grow-1">#printTeamName($homeTeam)</span> 1954: 1955: #if ($field.equals("team_home+team_home_result") && $homeTeam.result.length() > 0) 1956: #if ($homeTeam.winner) 1957: <span class="result winner"><span class="fa-solid fa-sm fa-caret-right" aria-hidden="true"></span> $homeTeam.result</span> 1958: #else 1959: <span class="result">$homeTeam.result</span> 1960: #end 1961: #end 1962: </div> 1963: #else 1964: 1965: #end 1966: </td> 1967: #end 1968: 1969: ## TEAM HOME RESULT 1970: #if ($field.equals("team_home_result")) 1971: #set ($class = "result align-middle homeresult") 1972: #if ($event.teams.size() > 1 && $event.teams.get(1).winner) 1973: #set ($class = "${class} winner") 1974: #end 1975: <td class="$class"> 1976: #if ($event.teams.size() > 1 && $event.teams.get(1).result.length() > 0) 1977: <span class="text-nowrap #if ($event.teams.get(1).winner) fw-bold #end"> 1978: #if ($event.teams.get(1).winner) <span class="fa-solid fa-sm fa-caret-right" aria-hidden="true"></span> #end 1979: $event.teams.get(1).result 1980: </span> 1981: #else 1982: #end 1983: </td> 1984: #end 1985: 1986: ## BOTH TEAMS AND THEIR RESULT 1987: #if ($field.equals("teams+result")) 1988: <td class="e_teams_result align-middle"> 1989: #foreach ($team in $event.teams) 1990: #if ($velocityCount == 1) 1991: #printNotations($event) 1992: #end 1993: 1994: #if ($velocityCount > 1) #end 1995: 1996: #printTeamLogoSetWidth($team, 32) 1997: #printTeamName($team) 1998: 1999: #if ($team.result.length() > 0) <span class="text-nowrap">$team.result</span> #end 2000: #end 2001: </td> 2002: #end 2003: 2004: ## STATUS 2005: #if ($field.equals("status")) 2006: <td class="status align-middle"> 2007: <div class="d-flex align-items-center justify-content-center justify-content-lg-between gap-2 flex-nowrap w-100"> 2008: #if ($eventClass.contains("in-progress")) 2009: <span class="fa fa-circle fa-sm fa-beat-fade text-primary" aria-hidden="true"></span> 2010: #end 2011: <span class="text-nowrap #if ($event.home) fw-bold #end">#printEventStatus($event)</span> 2012: #printNotations($event) 2013: </div> 2014: </td> 2015: #end 2016: 2017: ## LINKS (SAME ROW) 2018: #if ($field.equals("links")) 2019: <td class="links align-middle"> 2020: <div class="list-inline d-flex align-items-center justify-content-start flex-wrap gap-2"> 2021: #printEventLinks($event, "list-inline-item text-decoration-none m-0 text-nowrap") 2022: $wiki.event($event) 2023: </div> 2024: </td> 2025: #end 2026: ## NOTES (SAME ROW) 2027: #if ($field.equals("notes") || $field.equals("notes+neutralsite")) 2028: <td class="notes text-muted small align-middle"> 2029: <div class="d-flex align-items-center justify-content-center justify-content-lg-start gap-2"> 2030: $!event.notes #if ($field.equals("notes+neutralsite") && $event.neutralSite.length() > 0) @ $event.neutralSite #end 2031: </div> 2032: </td> 2033: #end 2034: 2035: ## NEUTRALSITE 2036: #if ($field.equals("neutralsite")) 2037: <td class="e_neutralsite align-middle"> 2038: #if ($event.neutralSite.length() > 0) 2039: ## DISPLAY THE @ CHARACTER ONLY FOR HEAD-TO-HEAD SCHEDULES (non numeric schedules sometimes use neutralSite field for event name) 2040: #if ($schedule.numericResults) @ #end $event.neutralSite 2041: #else 2042: 2043: #end 2044: </td> 2045: #end 2046: 2047: ## VENUE+LOCATION 2048: #if ($field.equals("venue+location")) 2049: <td class="e_venue"> 2050: #if ($event.venue.length() > 0) 2051: <div class="">$event.venue</div> 2052: #end 2053: #if ($event.address.length() > 0) 2054: <div class="address-formatted"> 2055: #if($event.address.length() > 0 && $event.city.length() > 0 && $event.stateCountry.length() > 0 && $event.zipCode.length() > 0) 2056: <a target="_blank" href="http://maps.google.com/maps?q=$!event.address.replace(' ','+'),+$!event.city.replace(' ','+'),+$!event.stateCountry+$!event.zipCode"> 2057: $!event.address, $!event.city, $!event.stateCountry $!event.zipCode 2058: </a> 2059: #else 2060: $!event.address, $!event.city, $!event.stateCountry $!event.zipCode 2061: #end 2062: </div> 2063: #end 2064: </td> 2065: #end 2066: 2067: ## VENUE 2068: #if ($field.equals("venue")) 2069: <td class="e_venue align-middle"> 2070: #if ($event.venue.length() > 0) 2071: $event.venue 2072: #end 2073: </td> 2074: #end 2075: 2076: ## VENUE 2077: #if ($field.equals("location")) 2078: <td class="e_location align-middle"> 2079: #if ($event.address.length() > 0) 2080: <div class="address-formatted"> 2081: #if($event.address.length() > 0 && $event.city.length() > 0 && $event.stateCountry.length() > 0 && $event.zipCode.length() > 0) 2082: <a target="_blank" href="http://maps.google.com/maps?q=$!event.address.replace(' ','+'),+$!event.city.replace(' ','+'),+$!event.stateCountry+$!event.zipCode"> 2083: $!event.address, $!event.city, $!event.stateCountry $!event.zipCode 2084: </a> 2085: #else 2086: $!event.address, $!event.city, $!event.stateCountry $!event.zipCode 2087: #end 2088: </div> 2089: #end 2090: </td> 2091: #end 2092: 2093: #end ## fields loop 2094: </tr> 2095: 2096: #foreach ($field in $scheduleFields) 2097: ## NOTES (NEW ROW) 2098: #if (($field.equals("_notes") && $event.notes.length() > 0) || ($field.equals("_notes+neutralsite") && ($event.notes.length() > 0 || $event.neutralSite.length() > 0))) 2099: <tr class="${eventClass}" #if ($event.inProgress) title="In Progress" #end> 2100: <td class="py-1 align-middle"> </td> 2101: <td colspan="${tool.math.sub($colCount, 1)}" class="notes py-1 text-muted small align-middle">$!event.notes #if ($field.equals("_notes+neutralsite") && $event.neutralSite.length() > 0) @ $event.neutralSite #end</td> 2102: </tr> 2103: #end 2104: 2105: ## LINKS (NEW ROW) 2106: #if ($field.equals("_links") && $event.links.size() > 0) 2107: <tr class="${eventClass}" #if ($event.inProgress) title="In Progress" #end> 2108: <td class="py-1 align-middle"> </td> 2109: <td colspan="${tool.math.sub($colCount, 1)}" class="links py-1 small align-middle"> 2110: #printEventLinks($event, "btn btn-outline-primary btn-sm") 2111: $wiki.event($event) 2112: </td> 2113: </tr> 2114: #end 2115: 2116: ## NEUTRAL SITE (NEW ROW) 2117: #if ($field.equals("_neutralsite") && $event.neutralSite.length() > 0) 2118: <tr class="${eventClass}" #if ($event.inProgress) title="In Progress" #end> 2119: <td class="py-1 align-middle"> </td> 2120: <td colspan="${tool.math.sub($colCount, 1)}" class="neutralsite py-1 small align-middle">#if ($schedule.numericResults) @ #end $event.neutralSite</td> 2121: </tr> 2122: #end 2123: #end ## fields loop 2124: 2125: #set ($lastDate = $theDate) 2126: #end ## EVENTS LOOP 2127: </tbody> 2128: </table> 2129: </div> 2130: #end 2131: 2132: #macro (printSchedule $evts) 2133: #if($evts.size() == 0) 2134: <div class="alert alert-secondary" role="alert"> 2135: No events are currently scheduled. Please check back soon! 2136: </div> 2137: #else 2138: <div class="schedule-inner#if ($enhancedLayout)-enhanced #end d-flex flex-column flex-md-row mb-3"> 2139: <div class="schedule-events-data flex-grow-1"> 2140: <div class="section-event-group event-group d-flex flex-column gap-3"> 2141: #if($groupMonths) 2142: #printCollapsibleMonths($evts) 2143: #else 2144: #printEvents($evts, false) 2145: #end 2146: </div> 2147: </div> 2148: #if ($showTeamLeadersCarousel || $showRelatedArticles) 2149: <div id="sidebar" class="flex-shrink-1 col-md-4 p-md-2 col-lg-3 p-lg-3"> 2150: #if ($rosterHeadshots.size() > 0 && $showTeamLeadersCarousel) 2151: $website.include("${page.sectionPage.url}/leaders?tmpl=stats-leader-carousel-template") 2152: #end 2153: #if ($showRelatedArticles) 2154: $website.include("${page.sectionPage.url}/news?tmpl=related-articles-template") 2155: #end 2156: </div> 2157: #end 2158: </div> 2159: #end 2160: #end 2161: 2162: ## END MACROS 2163: 2164: #set ($events = []) 2165: #set ($eventTypes = []) 2166: #set ($eventVenues = []) 2167: 2168: #foreach ($event in $schedule.events) 2169: #set ($addEvent = false) 2170: 2171: #if ($event.date && ($event.overall || $showExhibitionGames)) 2172: #set ($ignoreme = $events.add($event)) 2173: 2174: #if ($event.postseason && !$eventTypes.contains("postseason")) 2175: #set ($bool = $eventTypes.add("postseason")) 2176: #end 2177: 2178: #if ($event.conference && !$eventTypes.contains("conference")) 2179: #set ($bool = $eventTypes.add("conference")) 2180: #end 2181: 2182: #if ($event.division && !$eventTypes.contains("division")) 2183: #set ($bool = $eventTypes.add("division")) 2184: #end 2185: 2186: #if (!$event.overall && !$eventTypes.contains("exhibition")) 2187: #set ($bool = $eventTypes.add("exhibition")) 2188: #end 2189: 2190: #if ($event.neutralSite.length() > 0 && !$eventVenues.contains("neutral")) 2191: #set ($bool = $eventVenues.add("neutral")) 2192: #elseif ($event.home && !$eventVenues.contains("home")) 2193: #set ($bool = $eventVenues.add("home")) 2194: #else 2195: #if (!$eventVenues.contains("away")) 2196: #set ($bool = $eventVenues.add("away")) 2197: #end 2198: #end 2199: #end 2200: #end 2201: 2202: <div class="page-content schedule-content" data-team-schedule="$isTeamSchedule" data-schedule-type-h2h="$schedule.numericResults" data-schedule-view="${scheduleView}" data-schedule-layout="${scheduleLayout}" data-module="https://theme-assets.prestosports.com/theme-assets/generic/assets/js/schedule-layout.js"> 2203: $wiki 2204: 2205: #set ($scheduleNoteURL = "${page.url}-note") 2206: #if ($website.exists($scheduleNoteURL)) 2207: $website.include($scheduleNoteURL) 2208: #end 2209: 2210: <div class="page-content-header d-flex flex-column align-items-center gap-3 mb-3"> 2211: #printPageTitle() 2212: #printFilters() 2213: #printTeamStats() 2214: #printEventCountdown() 2215: </div> 2216: 2217: #if ($isSharedMeet) 2218: #printSharedMeet() 2219: #else 2220: #printSchedule($events) 2221: #end 2222: 2223: #printPostSchedule() 2224: 2225: #printLegends() 2226: 2227: #set ($scheduleFooterURL = "${page.url}-footer") 2228: #if ($website.exists($scheduleFooterURL)) 2229: <div class="schedule-footer">$website.include($scheduleFooterURL)</div> 2230: #end 2231: 2232: #printSubscribeLinks() 2233: 2234: $sfs $wiki $rss 2235: </div> 2236: 2237: #if ($website.ads.isAdvertisingEnabled('SCHEDULE')) 2238: $website.includeAgain("global-adserver-slots?adSlot=schedule") 2239: #end 2240: 2241: #if ($request.getParameter("ajax").equals("true")) 2242: $!request.setAttribute("decorator", "") 2243: #end 2244: 2245: #if ($request.getAttribute("scheduleNextEvent") && $scheduleNextEventScroll) 2246: <script> 2247: $(document).ready(function() { 2248: setTimeout(function() { 2249: let nextEventPos = $(".schedule-next-event-indicator").offset().top; 2250: let headerHeight = 0; 2251: if ($("header.sticky-top").outerHeight() > 0) { 2252: headerHeight = $("header.sticky-top").outerHeight(); 2253: nextEventPos = nextEventPos - headerHeight; 2254: } 2255: $("html, body").animate({scrollTop: nextEventPos}, 500, 'swing'); 2256: }, 2000); 2257: }); 2258: </script> 2259: #end 2260: 2261: #if (!$enhancedLayout) 2262: <script> 2263: document.addEventListener('DOMContentLoaded', function () { 2264: document.querySelectorAll('.collapse').forEach(function (panel) { 2265: panel.addEventListener('shown.bs.collapse', function () { 2266: const tables = panel.querySelectorAll('table.dataTable'); 2267: 2268: tables.forEach(function (tableEl) { 2269: const $table = $(tableEl); 2270: 2271: // If the table hasn't been initialized, initialize it 2272: if (!$table.data('dataTableInitialized')) { 2273: if (typeof window.initDataTable === 'function') { 2274: window.initDataTable($table); 2275: } else { 2276: console.warn('initDataTable function is not available'); 2277: } 2278: } else { 2279: $table.DataTable().columns.adjust().draw(); 2280: } 2281: }); 2282: }); 2283: }); 2284: }); 2285: </script> 2286: #end 2287: 2288: #if ($showSpotOnAddToCal) 2289: <script> 2290: (function (id) { 2291: if (document.getElementById(id)) return; 2292: var so = document.createElement('script'); so.id = id; so.async = true; 2293: so.src = 'https://dff2h0hbfv6w4.cloudfront.net/scripts/presto.js'; 2294: var s = document.getElementsByTagName('script')[0]; 2295: s.parentNode.insertBefore(so, s); 2296: })('spoton-script'); 2297: </script> 2298: #end |