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