{"id":1144,"date":"2018-10-11T20:10:40","date_gmt":"2018-10-12T03:10:40","guid":{"rendered":"http:\/\/www.wou.edu\/pure\/?page_id=1144"},"modified":"2026-05-12T16:33:52","modified_gmt":"2026-05-12T23:33:52","slug":"schedule","status":"publish","type":"page","link":"https:\/\/wou.edu\/pure\/academicexcellenceshowcase\/schedule\/","title":{"rendered":"Schedule"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.23.4&#8243; custom_padding=&#8221;0|0px|34.3906px|0px|false|false&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_row module_id=&#8221;aesProgram&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; width=&#8221;90%&#8221; max_width=&#8221;none&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.23.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text disabled_on=&#8221;on|on|on&#8221; admin_label=&#8221;Read me&#8221; _builder_version=&#8221;4.27.2&#8243; _module_preset=&#8221;default&#8221; disabled=&#8221;on&#8221; global_module=&#8221;23972&#8243; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>This box should not be visible on the public end of things, but is intended to be visible on the back end of divi.<\/p>\n<p>Most of the important content on this page is scripts, so is not visible in the divi default view. You will beed to go down to the bottom of the page and enable the &#8220;Wireframe view&#8221; on the left hand side of the screen to do most modifications to this page.<\/p>\n<p>[\/et_pb_text][et_pb_code disabled_on=&#8221;on|on|on&#8221; admin_label=&#8221;Get Data from Apps Script (getData function)&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|false|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; disabled=&#8221;on&#8221; global_module=&#8221;23288&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->  function getData(reqData,callback,loadPlace) {<!-- [et_pb_line_break_holder] -->    let sendData = {<!-- [et_pb_line_break_holder] -->    url: \"https:\/\/script.google.com\/macros\/s\/AKfycbwHs_ZH2D8RiCoq1-Fb6biK5K7Eq7yV8jJe_kE8kpCKgXh8Q2R087Ti-0wmP1FSCBMBZg\/exec\"<!-- [et_pb_line_break_holder] -->      \/\/script owned by libweb<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    sendData.method = reqData?.method ? reqData.method : \"GET\";<!-- [et_pb_line_break_holder] -->    sendData.dataType = 'json'<!-- [et_pb_line_break_holder] -->    if(sendData.method == \"POST\"){<!-- [et_pb_line_break_holder] -->      \/\/sendData.contentType = \"application\/json\";<!-- [et_pb_line_break_holder] -->      sendData.data = JSON.stringify(reqData);<!-- [et_pb_line_break_holder] -->      sendData.muteHttpExceptions = true;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    else {<!-- [et_pb_line_break_holder] -->      sendData.data = reqData;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    sendData.success = function (response) {<!-- [et_pb_line_break_holder] -->      callback(response);<!-- [et_pb_line_break_holder] -->      jQuery('.contentLoadingPURE').first().remove();<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    sendData.error =  function () {<!-- [et_pb_line_break_holder] -->      alert(\"Failed to retrieve entries data.\");<!-- [et_pb_line_break_holder] -->      jQuery('.contentLoadingPURE').first().remove(); <!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    let loadingImg = '<span class=\"contentLoadingPURE\" style=\"width:100%;text-align:center;\"><img decoding=\"async\" src=\"https:\/\/cdn.wou.edu\/wp-content\/blogs.dir\/613\/files\/2025\/05\/Loading_icon.gif\" style=\"opacity: 0.5;position: relative;margin-bottom:-6em;z-index:999 !important;\"\/><\/span>';<!-- [et_pb_line_break_holder] -->    if(typeof loadPlace != 'undefined'){<!-- [et_pb_line_break_holder] -->      jQuery('.contentLoadingPURE').first().remove();<!-- [et_pb_line_break_holder] -->      jQuery(loadPlace).before(loadingImg);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    else{<!-- [et_pb_line_break_holder] -->    \tjQuery('.et_pb_text_0:first').prepend(loadingImg);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    \t\/\/Pace.restart() <!-- [et_pb_line_break_holder] -->      jQuery.ajax(sendData);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code admin_label=&#8221;CSS&#8221; _builder_version=&#8221;4.27.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<style><!-- [et_pb_line_break_holder] --> \/* span.dt-column-order {<!-- [et_pb_line_break_holder] -->    float: right;<!-- [et_pb_line_break_holder] -->}*\/<!-- [et_pb_line_break_holder] -->  .card tbody tr {<!-- [et_pb_line_break_holder] -->\tfloat: none;<!-- [et_pb_line_break_holder] -->\twidth: 100%;<!-- [et_pb_line_break_holder] -->\tmargin-bottom: 1em;<!-- [et_pb_line_break_holder] -->\t\/*border: 1px solid #bfbfbf;*\/<!-- [et_pb_line_break_holder] -->\tborder-radius: 0;<!-- [et_pb_line_break_holder] -->\tbackground-color: transparent !important;<!-- [et_pb_line_break_holder] -->\tbox-shadow: 0;<!-- [et_pb_line_break_holder] -->\tpadding: .25em;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->#facet-buttons{ <!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap;<!-- [et_pb_line_break_holder] -->  padding-left:1em;<!-- [et_pb_line_break_holder] -->  padding-right:1em;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --> \/* #facet-buttons button{ <!-- [et_pb_line_break_holder] -->  font-size:small;<!-- [et_pb_line_break_holder] -->  }*\/<!-- [et_pb_line_break_holder] -->   #facet-buttons select {<!-- [et_pb_line_break_holder] -->    font-size: large;<!-- [et_pb_line_break_holder] -->    font-weight: bold;<!-- [et_pb_line_break_holder] -->    border: solid;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtb-popover-close{padding:.5em;}<!-- [et_pb_line_break_holder] -->.dtsp-panesContainer, .dtsp-searchPanes {width:100%;}<!-- [et_pb_line_break_holder] -->div.dt-search, div.dt-search input, div.dt-search label { <!-- [et_pb_line_break_holder] -->    font-size: large;<!-- [et_pb_line_break_holder] -->    width: auto;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->div.dt-search label { <!-- [et_pb_line_break_holder] --> \tfont-weight: bold !important;<!-- [et_pb_line_break_holder] -->  padding-right: .5em !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* ul.pagination li {<!-- [et_pb_line_break_holder] -->    padding: .15em !important;<!-- [et_pb_line_break_holder] -->    font-size: xxx-large;<!-- [et_pb_line_break_holder] -->}*\/ <!-- [et_pb_line_break_holder] -->.dt-buttons button {<!-- [et_pb_line_break_holder] -->    background-color: #dbdbdb !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->ul.pagination  {<!-- [et_pb_line_break_holder] -->  margin-bottom: 0 !important;<!-- [et_pb_line_break_holder] -->  padding-bottom:0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->ul.pagination li a {<!-- [et_pb_line_break_holder] -->    padding: .5em !important;<!-- [et_pb_line_break_holder] -->    font-size: larger !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->ul.pagination li.active a {<!-- [et_pb_line_break_holder] -->    font-weight: bold !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.dtsp-subRow2 .btn-group {<!-- [et_pb_line_break_holder] -->    display: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --> .dtsp-searchPane.dtsp-columns-2 {<!-- [et_pb_line_break_holder] -->   \/* max-width: 50%;*\/<!-- [et_pb_line_break_holder] -->    float: left;<!-- [et_pb_line_break_holder] -->} <!-- [et_pb_line_break_holder] -->  th.dtsp-nameColumn {<!-- [et_pb_line_break_holder] -->    display: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->  div#presentations_wrapper, #presentations_wrapper .btn {\/*font-size: 16px;*\/font-size: 1.5rem;}<!-- [et_pb_line_break_holder] -->  .et-db #et-boc .et-l .et_pb_module input {margin: 0;<!-- [et_pb_line_break_holder] -->    padding: .35em;<!-- [et_pb_line_break_holder] -->    height: 2.6rem;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  .btn { margin-top: 0;}<!-- [et_pb_line_break_holder] -->  .dtsp-searchPane,div.dtsp-panesContainer button.dtsp-clearAll, div.dtsp-panesContainer button.dtsp-collapseAll, \tdiv.dtsp-panesContainer button.dtsp-showAll {<!-- [et_pb_line_break_holder] -->    border: .5px solid lightgrey !important;<!-- [et_pb_line_break_holder] -->    background-color: transparent; <!-- [et_pb_line_break_holder] -->    border-radius:4px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->.dtsp-searchPanes,.dtb-collection-closeable {<!-- [et_pb_line_break_holder] -->  background-color: white !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon span, button.dtsp-countButton span {<!-- [et_pb_line_break_holder] -->\tbackground-size: 23px; <!-- [et_pb_line_break_holder] -->  background-repeat: no-repeat !important;<!-- [et_pb_line_break_holder] -->  background-position: center !important; <!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  .dtsp-paneInputButton, .form-control, .search{<!-- [et_pb_line_break_holder] -->    border:  1px solid #ced4da !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  .dtsp-titleRow { margin-top: 2em !important; }<!-- [et_pb_line_break_holder] -->  button.btn.btn-secondary { background-color: #dbdbdb;}<!-- [et_pb_line_break_holder] -->  .rounded-pill {<!-- [et_pb_line_break_holder] -->    padding: .2em !important;<!-- [et_pb_line_break_holder] -->    margin-left: .5em !important;<!-- [et_pb_line_break_holder] -->    color: white !important;<!-- [et_pb_line_break_holder] -->    text-align: center !important;<!-- [et_pb_line_break_holder] -->    border-radius: 4em !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->  @media only screen and (max-width: 700px) {<!-- [et_pb_line_break_holder] -->    div.dtsp-columns-2 {<!-- [et_pb_line_break_holder] -->      max-width:100%;width:100% !important;margin: 0px !important;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    .buttons-excel {display:none;}<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->        \/* \"div.dtsp-columns-2:nth-of-type(1),div.dtsp-columns-2:nth-of-type(2),div.dtsp-columns-2:nth-of-type(5),,div.dtsp-columns-2:nth-of-type(6) {max-width:100%;width:100% !important;margin: 0px !important;}*\/<!-- [et_pb_line_break_holder] --><\/style>\n<p>[\/et_pb_code][et_pb_text _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;0px|0px|0px|0px|false|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<div id=\"gfae-config-data\" style=\"display:none;\" aria-hidden=\"true\" data-config=\"{&quot;ajaxUrl&quot;:&quot;https:\\\/\\\/wou.edu\\\/pure\\\/wp-admin\\\/admin-ajax.php&quot;,&quot;nonce&quot;:&quot;44a3d868ad&quot;}\"><\/div>\n<div class=\"et_pb_button_module_wrapper et_pb_button_0_wrapper  et_pb_module sessionToggle\" style=\"text-align: center;\"><a class=\"et_pb_button et_pb_button_0 et_pb_bg_layout_light \" href=\"#\">View by session<\/a><\/div>\n<div id=\"facet-buttons\"><\/div>\n<p>[\/et_pb_text][et_pb_code admin_label=&#8221;Constants, promise and year filter functions&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; global_module=&#8221;26143&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->const currentDate = new Date();<!-- [et_pb_line_break_holder] -->const currentYear = currentDate.getFullYear();<!-- [et_pb_line_break_holder] -->const pageParams = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] -->let viewAs =<!-- [et_pb_line_break_holder] -->  pageParams.get(\"view_as\") ||<!-- [et_pb_line_break_holder] -->  pageParams.get(\"viewas\") ||<!-- [et_pb_line_break_holder] -->  pageParams.get(\"viewAs\") ||<!-- [et_pb_line_break_holder] -->  \"\";<!-- [et_pb_line_break_holder] -->let viewYear = pageParams.get(\"aesyear\") || currentYear;<!-- [et_pb_line_break_holder] -->let viewType = pageParams.get(\"viewType\") || \"\";<!-- [et_pb_line_break_holder] -->let formId = pageParams.get(\"formId\") || jQuery(\"#form-id\").val() || null; \/\/ Replace with dynamic form ID<!-- [et_pb_line_break_holder] -->let entryId = pageParams.get(\"entryId\") || jQuery(\"#entry-id\").val() || null; \/\/ Replace with dynamic entry ID<!-- [et_pb_line_break_holder] -->let viewSubmissions = pageParams.get(\"submissions\") || null;<!-- [et_pb_line_break_holder] -->let allEntries = pageParams.get(\"allEntries\") || null;<!-- [et_pb_line_break_holder] -->function getDataPromise(params) {<!-- [et_pb_line_break_holder] -->  return new Promise((resolve, reject) => {<!-- [et_pb_line_break_holder] -->    getData(params, function (response) {<!-- [et_pb_line_break_holder] -->      resolve(response);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/ Returns the year a form entry was created<!-- [et_pb_line_break_holder] -->function getEntryYear(val) {<!-- [et_pb_line_break_holder] -->  return new Date(val.date_created).getFullYear();<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code disabled_on=&#8221;off|off|off&#8221; admin_label=&#8221;AES Local Scripts&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; global_module=&#8221;24024&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->\/* THIS IS A GLOBAL BLOCK *\/<!-- [et_pb_line_break_holder] -->\/*<!-- [et_pb_line_break_holder] -->Functions in this file:<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*retrieveSessionTest<!-- [et_pb_line_break_holder] -->\tA LOT goes on here. THe sessionList, chairList,presenterList, and presentationList objects are set here. Returns an object called aesData that includes all of those, as well as the labels and mentors, which are set by calling those functions in from this function<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*getLabels <!-- [et_pb_line_break_holder] -->\tUses _labels object to get field names<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*getMentors<!-- [et_pb_line_break_holder] -->\tExactly what is says. Pulls mentors list from presentations. Adds presentations to mentors<!-- [et_pb_line_break_holder] -->*\/<!-- [et_pb_line_break_holder] -->function retrieveSessionTest(sessions, presentations, archived) {<!-- [et_pb_line_break_holder] -->  sessionLabels = getLabels(sessions[\"_labels\"]);<!-- [et_pb_line_break_holder] -->  presentationLabels = getLabels(presentations[\"_labels\"]);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  for (const [key, value] of Object.entries(sessions.entries)) {<!-- [et_pb_line_break_holder] -->    if (typeof value[1] === \"string\" && value[1].trim().startsWith(\"[\")) {<!-- [et_pb_line_break_holder] -->      try {<!-- [et_pb_line_break_holder] -->        const arr = JSON.parse(value[1]);<!-- [et_pb_line_break_holder] -->        if (Array.isArray(arr)) value[1] = arr[0] || value[1];<!-- [et_pb_line_break_holder] -->      } catch (e) {}<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    let sessionTitle = value[1];<!-- [et_pb_line_break_holder] -->    const existing = sessionList[sessionTitle];<!-- [et_pb_line_break_holder] -->    const shouldOverwrite = !existing ||<!-- [et_pb_line_break_holder] -->      !existing.date_created ||<!-- [et_pb_line_break_holder] -->      new Date(value.date_created) >= new Date(existing.date_created);<!-- [et_pb_line_break_holder] -->    if (shouldOverwrite) {<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle] = value;<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle].pkey = value.id || sessionTitle;<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle].session_title = value[1];<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle].presentations = {};<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle].presentationOrder = [];<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle].chairs = {};<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let chair = value[23].replace(\/@(mail.)?wou.edu\/, \"\");<!-- [et_pb_line_break_holder] -->    chairList[chair] = chairList[chair] || {};<!-- [et_pb_line_break_holder] -->    addYearToPerson(chairList[chair], value.date_created);<!-- [et_pb_line_break_holder] -->    chairList[chair].sessions = chairList[chair].sessions || [];<!-- [et_pb_line_break_holder] -->    chairList[chair].sessions.push(sessionTitle);<!-- [et_pb_line_break_holder] -->    chairList[chair][\"email\"] = value[23] || chairList[chair][\"email\"];<!-- [et_pb_line_break_holder] -->    chairList[chair][\"first\"] = value[\"22.3\"] || chairList[chair][\"first\"];<!-- [et_pb_line_break_holder] -->    chairList[chair][\"last\"] = value[\"22.6\"] || chairList[chair][\"last\"];<!-- [et_pb_line_break_holder] -->    sessionList[sessionTitle].chairs[chair] =<!-- [et_pb_line_break_holder] -->      sessionList[sessionTitle].chairs[chair] || chairList[chair];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (typeof value[3] == \"object\") {<!-- [et_pb_line_break_holder] -->      value[3].forEach(function (item, index) {<!-- [et_pb_line_break_holder] -->        chair = item[\"Email\"].replace(\/@(mail.)?wou.edu\/, \"\");<!-- [et_pb_line_break_holder] -->        chairList[chair] = chairList[chair] || {};<!-- [et_pb_line_break_holder] -->        addYearToPerson(chairList[chair], value.date_created);<!-- [et_pb_line_break_holder] -->        chairList[chair].sessions = chairList[chair].sessions || [];<!-- [et_pb_line_break_holder] -->        chairList[chair].sessions.push(sessionTitle);<!-- [et_pb_line_break_holder] -->        chairList[chair][\"email\"] = item[\"Email\"] || chairList[chair][\"email\"];<!-- [et_pb_line_break_holder] -->        chairList[chair][\"first\"] =<!-- [et_pb_line_break_holder] -->          item[\"First Name\"] || chairList[chair][\"first\"];<!-- [et_pb_line_break_holder] -->        chairList[chair][\"last\"] =<!-- [et_pb_line_break_holder] -->          item[\"Last Name\"] || chairList[chair][\"last\"];<!-- [et_pb_line_break_holder] -->        sessionList[sessionTitle].chairs[chair] =<!-- [et_pb_line_break_holder] -->          sessionList[sessionTitle].chairs[chair] || chairList[chair];<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  for (const [key, value] of Object.entries(presentations.entries)) {<!-- [et_pb_line_break_holder] -->    if (value && Object.keys(value).length > 0 && value[\"39.1\"] != \"Yes\") {<!-- [et_pb_line_break_holder] -->      let session_title = value[6];<!-- [et_pb_line_break_holder] -->      let sessionFormat = session_title;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      value[4].forEach(function (item, index) {<!-- [et_pb_line_break_holder] -->        let presenter = item[\"WOU Email\"].replace(\/@(mail.)?wou.edu\/, \"\");<!-- [et_pb_line_break_holder] -->        presenterList[presenter] = presenterList[presenter] || item;<!-- [et_pb_line_break_holder] -->        addYearToPerson(presenterList[presenter], value.date_created);<!-- [et_pb_line_break_holder] -->        presenterList[presenter].presentations =<!-- [et_pb_line_break_holder] -->          presenterList[presenter].presentations || [];<!-- [et_pb_line_break_holder] -->        presenterList[presenter].presentations.push(value[7]);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      presentationList[value.id] = value;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (!session_title.match(\/minute\/i)) {<!-- [et_pb_line_break_holder] -->        if (value[10] != \"\") {<!-- [et_pb_line_break_holder] -->          session_title = value[10];<!-- [et_pb_line_break_holder] -->          if (typeof session_title === \"string\" && session_title.trim().startsWith(\"[\")) {<!-- [et_pb_line_break_holder] -->            try {<!-- [et_pb_line_break_holder] -->              const arr = JSON.parse(session_title);<!-- [et_pb_line_break_holder] -->              if (Array.isArray(arr)) session_title = arr[0] || session_title;<!-- [et_pb_line_break_holder] -->            } catch (e) {}<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          sessionList[session_title] = sessionList[session_title] || {};<!-- [et_pb_line_break_holder] -->          presentationList[value.id].session_title = session_title;<!-- [et_pb_line_break_holder] -->          sessionList[session_title].session_title = sessionList[session_title].session_title || session_title;<!-- [et_pb_line_break_holder] -->          sessionList[session_title].session_format = sessionFormat;<!-- [et_pb_line_break_holder] -->          sessionList[session_title].presentations =<!-- [et_pb_line_break_holder] -->            sessionList[session_title].presentations || {};<!-- [et_pb_line_break_holder] -->          sessionList[session_title].presentationOrder =<!-- [et_pb_line_break_holder] -->            sessionList[session_title].presentationOrder || [];<!-- [et_pb_line_break_holder] -->          sessionList[session_title].presentations[value.id] =<!-- [et_pb_line_break_holder] -->            presentationList[value.id];<!-- [et_pb_line_break_holder] -->        } else if (value[12]) {<!-- [et_pb_line_break_holder] -->          let arr12 = value[12];<!-- [et_pb_line_break_holder] -->          if (typeof arr12 === \"string\") {<!-- [et_pb_line_break_holder] -->            try { const p = JSON.parse(arr12); arr12 = Array.isArray(p) ? p : [arr12]; }<!-- [et_pb_line_break_holder] -->            catch (e) { arr12 = [arr12]; }<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          if (Array.isArray(arr12) && arr12.length > 0) {<!-- [et_pb_line_break_holder] -->            session_title = arr12.join();<!-- [et_pb_line_break_holder] -->            presentationList[value.id].session_title = session_title;<!-- [et_pb_line_break_holder] -->            arr12.forEach(function (item) {<!-- [et_pb_line_break_holder] -->              if (typeof item !== \"string\" || !item.trim()) return;<!-- [et_pb_line_break_holder] -->              sessionList[item] = sessionList[item] || {};<!-- [et_pb_line_break_holder] -->              sessionList[item].session_format =<!-- [et_pb_line_break_holder] -->                sessionList[item].session_format || sessionFormat || \"\";<!-- [et_pb_line_break_holder] -->              sessionList[item].session_title =<!-- [et_pb_line_break_holder] -->                sessionList[item].session_title || session_title;<!-- [et_pb_line_break_holder] -->              sessionList[item].presentationOrder =<!-- [et_pb_line_break_holder] -->                sessionList[item].presentationOrder || [];<!-- [et_pb_line_break_holder] -->              sessionList[item].presentations =<!-- [et_pb_line_break_holder] -->                sessionList[item].presentations || {};<!-- [et_pb_line_break_holder] -->              sessionList[item].presentations[value.id] =<!-- [et_pb_line_break_holder] -->                presentationList[value.id];<!-- [et_pb_line_break_holder] -->              if (!sessionList[item].date_created) {<!-- [et_pb_line_break_holder] -->                sessionList[item].date_created = value.date_created;<!-- [et_pb_line_break_holder] -->              }<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->        } else if (value[13]) {<!-- [et_pb_line_break_holder] -->          let arr13 = value[13];<!-- [et_pb_line_break_holder] -->          if (typeof arr13 === \"string\") {<!-- [et_pb_line_break_holder] -->            try { const p = JSON.parse(arr13); arr13 = Array.isArray(p) ? p : [arr13]; }<!-- [et_pb_line_break_holder] -->            catch (e) { arr13 = [arr13]; }<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          if (Array.isArray(arr13) && arr13.length > 0) {<!-- [et_pb_line_break_holder] -->            session_title = arr13.join();<!-- [et_pb_line_break_holder] -->            presentationList[value.id].session_title = session_title;<!-- [et_pb_line_break_holder] -->            arr13.forEach(function (item) {<!-- [et_pb_line_break_holder] -->              if (typeof item !== \"string\" || !item.trim()) return;<!-- [et_pb_line_break_holder] -->              sessionList[item] = sessionList[item] || {};<!-- [et_pb_line_break_holder] -->              sessionList[item].session_format =<!-- [et_pb_line_break_holder] -->                sessionList[item].session_format || sessionFormat || \"\";<!-- [et_pb_line_break_holder] -->              sessionList[item].session_title =<!-- [et_pb_line_break_holder] -->                sessionList[item].session_title || session_title;<!-- [et_pb_line_break_holder] -->              sessionList[item].presentationOrder =<!-- [et_pb_line_break_holder] -->                sessionList[item].presentationOrder || [];<!-- [et_pb_line_break_holder] -->              sessionList[item].presentations =<!-- [et_pb_line_break_holder] -->                sessionList[item].presentations || {};<!-- [et_pb_line_break_holder] -->              sessionList[item].presentations[value.id] =<!-- [et_pb_line_break_holder] -->                presentationList[value.id];<!-- [et_pb_line_break_holder] -->              if (!sessionList[item].date_created) {<!-- [et_pb_line_break_holder] -->                sessionList[item].date_created = value.date_created;<!-- [et_pb_line_break_holder] -->              }<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->          \/\/ No session assigned \u2014 link to format bucket so it appears in schedule<!-- [et_pb_line_break_holder] -->          sessionList[session_title] = sessionList[session_title] || {};<!-- [et_pb_line_break_holder] -->          sessionList[session_title].session_title = sessionList[session_title].session_title || session_title;<!-- [et_pb_line_break_holder] -->          sessionList[session_title].presentations = sessionList[session_title].presentations || {};<!-- [et_pb_line_break_holder] -->          sessionList[session_title].presentations[value.id] = presentationList[value.id];<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      sessionList[session_title] = sessionList[session_title] || {};<!-- [et_pb_line_break_holder] -->      sessionList[session_title].session_format =<!-- [et_pb_line_break_holder] -->        sessionList[session_title].session_format || sessionFormat;<!-- [et_pb_line_break_holder] -->      \/\/ Backfill date_created for any session bucket built only from presentations<!-- [et_pb_line_break_holder] -->      if (!sessionList[session_title].date_created) {<!-- [et_pb_line_break_holder] -->        sessionList[session_title].date_created = value.date_created;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      getMentors(value, mentorList, presentationList);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  let aesData = {};<!-- [et_pb_line_break_holder] -->  aesData.sessionLabels = sessionLabels;<!-- [et_pb_line_break_holder] -->  aesData.presentationLabels = presentationLabels;<!-- [et_pb_line_break_holder] -->  aesData.mentorList = mentorList;<!-- [et_pb_line_break_holder] -->  aesData.presenterList = presenterList;<!-- [et_pb_line_break_holder] -->  aesData.chairList = chairList;<!-- [et_pb_line_break_holder] -->  aesData.sessions = sessionList;<!-- [et_pb_line_break_holder] -->  aesData.presentations = presentationList;<!-- [et_pb_line_break_holder] -->  return aesData;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function getLabels(labels) {<!-- [et_pb_line_break_holder] -->  let objLabels = {};<!-- [et_pb_line_break_holder] -->  for (const [key, value] of Object.entries(labels)) {<!-- [et_pb_line_break_holder] -->    if (typeof value == \"object\") {<!-- [et_pb_line_break_holder] -->      for (const [k, v] of Object.entries(value)) {<!-- [et_pb_line_break_holder] -->        objLabels[k] = v;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      objLabels[key] = value;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  return objLabels;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Extracts mentor data from a presentation entry and adds to mentorList<!-- [et_pb_line_break_holder] -->function getMentors(value, mentorList, presentationList) {<!-- [et_pb_line_break_holder] -->  let mentor = value[30].replace(\/@(mail.)?wou.edu\/, \"\");<!-- [et_pb_line_break_holder] -->  mentorList[mentor] = mentorList[mentor] || {};<!-- [et_pb_line_break_holder] -->  addYearToPerson(mentorList[mentor], value.date_created);<!-- [et_pb_line_break_holder] -->  mentorList[mentor].presentations = mentorList[mentor].presentations || [];<!-- [et_pb_line_break_holder] -->  mentorList[mentor].presentations.push(value[7]);<!-- [et_pb_line_break_holder] -->  mentorList[mentor][\"email\"] = value[30] || mentorList[mentor][\"email\"];<!-- [et_pb_line_break_holder] -->  mentorList[mentor][\"first\"] = value[\"29.3\"] || mentorList[mentor][\"first\"];<!-- [et_pb_line_break_holder] -->  mentorList[mentor][\"last\"] = value[\"29.6\"] || mentorList[mentor][\"last\"];<!-- [et_pb_line_break_holder] -->  presentationList[value.id].mentors = presentationList[value.id].mentors || [];<!-- [et_pb_line_break_holder] -->  presentationList[value.id].mentors.push(mentorList[mentor]);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (typeof value[1] == \"object\") {<!-- [et_pb_line_break_holder] -->    value[1].forEach(function (item, index) {<!-- [et_pb_line_break_holder] -->      mentor = item[\"Mentor Email\"].replace(\/@(mail.)?wou.edu\/, \"\");<!-- [et_pb_line_break_holder] -->      mentorList[mentor] = mentorList[mentor] || {};<!-- [et_pb_line_break_holder] -->      addYearToPerson(mentorList[mentor], value.date_created);<!-- [et_pb_line_break_holder] -->      mentorList[mentor].presentations = mentorList[mentor].presentations || [];<!-- [et_pb_line_break_holder] -->      mentorList[mentor].presentations.push(value[7]);<!-- [et_pb_line_break_holder] -->      mentorList[mentor][\"email\"] =<!-- [et_pb_line_break_holder] -->        item[\"Mentor Email\"] || mentorList[mentor][\"email\"];<!-- [et_pb_line_break_holder] -->      mentorList[mentor][\"first\"] =<!-- [et_pb_line_break_holder] -->        item[\"Mentor First Name\"] || mentorList[mentor][\"first\"];<!-- [et_pb_line_break_holder] -->      mentorList[mentor][\"last\"] =<!-- [et_pb_line_break_holder] -->        item[\"Mentor Last Name\"] || mentorList[mentor][\"last\"];<!-- [et_pb_line_break_holder] -->      presentationList[value.id].mentors.push(mentorList[mentor]);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Tracks which years a person (chair\/mentor\/presenter) has been associated with<!-- [et_pb_line_break_holder] -->function addYearToPerson(person, date_created) {<!-- [et_pb_line_break_holder] -->  const year = new Date(date_created).getFullYear();<!-- [et_pb_line_break_holder] -->  person.years = person.years || [];<!-- [et_pb_line_break_holder] -->  if (!person.years.includes(year)) {<!-- [et_pb_line_break_holder] -->    person.years.push(year);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code admin_label=&#8221;CSS: Card styles&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; global_module=&#8221;24525&#8243; global_colors_info=&#8221;{}&#8221;]<\/p>\n<style><!-- [et_pb_line_break_holder] -->  td.timeRow {<!-- [et_pb_line_break_holder] -->    display: inline !important;<!-- [et_pb_line_break_holder] -->    padding-right:0 !important;<!-- [et_pb_line_break_holder] -->    margin-bottom:1em;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->.table-bordered.card, table.card.dataTable {<!-- [et_pb_line_break_holder] -->\tborder: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.card table {border:none;}<!-- [et_pb_line_break_holder] -->.card tbody {<!-- [et_pb_line_break_holder] -->    display: flex;<!-- [et_pb_line_break_holder] -->    flex-direction: row;<!-- [et_pb_line_break_holder] -->    flex-wrap: wrap;<!-- [et_pb_line_break_holder] -->\twidth:auto;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\t<!-- [et_pb_line_break_holder] -->.card thead {<!-- [et_pb_line_break_holder] -->\tdisplay: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.card tbody tr {<!-- [et_pb_line_break_holder] -->\tfloat: left;<!-- [et_pb_line_break_holder] -->\twidth: 99%;<!-- [et_pb_line_break_holder] -->\tmargin-bottom: 1em;<!-- [et_pb_line_break_holder] -->\t\/*border: 1px solid #bfbfbf;*\/<!-- [et_pb_line_break_holder] -->\tborder-radius: 0.5em;<!-- [et_pb_line_break_holder] -->\tbackground-color: transparent !important;<!-- [et_pb_line_break_holder] -->\tbox-shadow: 0.25rem 0.25rem 0.5rem rgba(0, 0, 0, 0.25);<!-- [et_pb_line_break_holder] -->\tpadding: .75em;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.card tbody tr td {<!-- [et_pb_line_break_holder] -->\tdisplay: block;<!-- [et_pb_line_break_holder] -->\tborder: 0;<!-- [et_pb_line_break_holder] -->  padding: 0;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#dirServices thead {<!-- [et_pb_line_break_holder] -->\t\tdisplay:none;<!-- [et_pb_line_break_holder] -->\t}<!-- [et_pb_line_break_holder] -->.facet-buttons {<!-- [et_pb_line_break_holder] -->     margin-bottom: 20px;<!-- [et_pb_line_break_holder] -->   }<!-- [et_pb_line_break_holder] -->.facet-button {<!-- [et_pb_line_break_holder] -->   padding: 5px 10px;<!-- [et_pb_line_break_holder] -->   margin: 5px !important;<!-- [et_pb_line_break_holder] -->   border: 1px solid #db0a29;<!-- [et_pb_line_break_holder] -->   border-radius: 5px;<!-- [et_pb_line_break_holder] -->   background-color: #fff;<!-- [et_pb_line_break_holder] -->   color: #db0a29;<!-- [et_pb_line_break_holder] -->   cursor: pointer;<!-- [et_pb_line_break_holder] -->   }<!-- [et_pb_line_break_holder] -->.facet-button.active {<!-- [et_pb_line_break_holder] -->    background-color: #cfcfcf;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><\/style>\n<p>[\/et_pb_code][et_pb_code disabled_on=&#8221;on|on|on&#8221; admin_label=&#8221;DataTables Scripts&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_module=&#8221;24365&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/pace-js@latest\/pace.min.js\"><\/script><!-- [et_pb_line_break_holder] --><link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/twitter-bootstrap\/5.3.3\/css\/bootstrap.min.css\"><!-- [et_pb_line_break_holder] --><link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/2.3.0\/css\/dataTables.bootstrap5.css\"><!-- [et_pb_line_break_holder] --><link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/responsive\/3.0.4\/css\/responsive.dataTables.css\"><!-- [et_pb_line_break_holder] --><!--<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pace\/1.2.4\/pace.min.js\" integrity=\"sha512-2cbsQGdowNDPcKuoBd2bCcsJky87Mv0LEtD\/nunJUgk6MOYTgVMGihS\/xCEghNf04DPhNiJ4DZw5BxDd1uyOdw==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"><\/script>--><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/v\/bs5\/dt-2.0.7\/b-3.0.2\/b-print-3.0.2\/date-1.5.2\/fh-4.0.1\/r-3.0.2\/sp-2.3.1\/sl-2.0.1\/datatables.min.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/buttons\/3.2.3\/js\/dataTables.buttons.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/buttons\/3.2.3\/js\/buttons.dataTables.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.10.1\/jszip.min.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/buttons\/3.2.3\/js\/buttons.html5.min.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/buttons\/3.2.3\/js\/buttons.print.min.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdfmake\/0.2.7\/pdfmake.min.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdfmake\/0.2.7\/vfs_fonts.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/buttons\/3.0.2\/js\/buttons.colVis.min.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/rowreorder\/1.5.0\/js\/dataTables.rowReorder.js\"><\/script><!-- [et_pb_line_break_holder] --><script src=\"https:\/\/cdn.datatables.net\/rowreorder\/1.5.0\/js\/rowReorder.dataTables.js\"><\/script><!-- [et_pb_line_break_holder] --><script> <!-- [et_pb_line_break_holder] -->function ellipsit (<!-- [et_pb_line_break_holder] -->      cutoff,<!-- [et_pb_line_break_holder] -->      wordbreak,<!-- [et_pb_line_break_holder] -->      escapeHtml<!-- [et_pb_line_break_holder] -->    ) {<!-- [et_pb_line_break_holder] -->      var esc = function (t) {<!-- [et_pb_line_break_holder] -->        return t<!-- [et_pb_line_break_holder] -->          .replace(\/&\/g, \"&\")<!-- [et_pb_line_break_holder] -->          .replace(\/<\/g, \"<\")<!-- [et_pb_line_break_holder] -->          .replace(\/>\/g, \">\")<!-- [et_pb_line_break_holder] -->          .replace(\/\"\/g, '\"');<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      return function (d, type, row) {<!-- [et_pb_line_break_holder] -->        \/\/ Order, search and type get the original data<!-- [et_pb_line_break_holder] -->        if (type !== \"display\") {<!-- [et_pb_line_break_holder] -->          return d;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (typeof d !== \"number\" && typeof d !== \"string\") {<!-- [et_pb_line_break_holder] -->          return d;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        d = d.toString(); \/\/ cast numbers<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (d.length < cutoff) {<!-- [et_pb_line_break_holder] -->          return d;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        var shortened = d.substr(0, cutoff - 1);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Find the last white space character in the string<!-- [et_pb_line_break_holder] -->        if (wordbreak) {<!-- [et_pb_line_break_holder] -->          shortened = shortened.replace(\/\\s([^\\s]*)$\/, \"\");<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Protect against uncontrolled HTML input<!-- [et_pb_line_break_holder] -->        if (escapeHtml) {<!-- [et_pb_line_break_holder] -->          shortened = esc(shortened);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        function addslashes(string) {<!-- [et_pb_line_break_holder] -->          str = JSON.stringify(String(string));<!-- [et_pb_line_break_holder] -->          return str.substring(1, str.length - 1);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        return (<!-- [et_pb_line_break_holder] -->          `<\/p>\n<div class=\"ellipsis\">${shortened}\u2026 <em>click for more<\/em><\/div>\n<div class=\"full\" style=\"display:none;\">${d.trim()}<\/div>\n<p>`<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->        \/\/<span class=\"hideFull\" style=\"display:none;\"> <em>Click for less<\/em><\/span>'<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->  jQuery(\"head\").append('<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">');\/\/<\/p>\n<style>html{font-size:14px;}<\/style>\n<p><!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code admin_label=&#8221;May need annual update: AES Logo file, field mappings, admin links, and table layouts for each table type&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_module=&#8221;24979&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->\/* THIS IS A GLOBAL BLOCK *\/<!-- [et_pb_line_break_holder] -->let aesLogoFile =<!-- [et_pb_line_break_holder] -->  \"https:\/\/cdn.wou.edu\/pure\/files\/2025\/03\/2025_AES_web_banner-scaled.jpg\";<!-- [et_pb_line_break_holder] -->let adminFieldValues = {<!-- [et_pb_line_break_holder] -->  1: {<!-- [et_pb_line_break_holder] -->    archive: 38.1,<!-- [et_pb_line_break_holder] -->    markDuplicate: 39.1,<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] -->  2: {<!-- [et_pb_line_break_holder] -->    archive: 21.1,<!-- [et_pb_line_break_holder] -->    markDuplicate: 34.1,<!-- [et_pb_line_break_holder] -->    room: 27,<!-- [et_pb_line_break_holder] -->    start_time: 31,<!-- [et_pb_line_break_holder] -->    end_time: 32,<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] -->};<!-- [et_pb_line_break_holder] -->\/\/ Extra columns appended to submission list tables beyond what the server returns.<!-- [et_pb_line_break_holder] -->\/\/ Adjust field IDs to match your GravityForms form structure.<!-- [et_pb_line_break_holder] -->\/\/ Field X.6 = Last Name sub-field (.6) of a GF Name field \u2014 replace 3 with your actual field # in GF.<!-- [et_pb_line_break_holder] -->\/\/ Field 37  = Abstract Approved (confirmed from presentations form).<!-- [et_pb_line_break_holder] -->const SUBMISSION_TABLE_EXTRA_COLUMNS = {<!-- [et_pb_line_break_holder] -->  1: [<!-- [et_pb_line_break_holder] -->    { field_id: \"3.6\", label: \"Last Name\" },<!-- [et_pb_line_break_holder] -->    { field_id: \"37\", label: \"Approved\" },<!-- [et_pb_line_break_holder] -->  ],<!-- [et_pb_line_break_holder] -->  2: [],<!-- [et_pb_line_break_holder] -->};<!-- [et_pb_line_break_holder] -->\/\/this function allows us to dynamically set the table rows and headers. It is called for each row so we can template the data<!-- [et_pb_line_break_holder] -->function getHeaders(kind, val) {<!-- [et_pb_line_break_holder] -->  let tableHeader = {};<!-- [et_pb_line_break_holder] -->  switch (kind) {<!-- [et_pb_line_break_holder] -->    case \"sessions\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        Actions: `<a href=\"https:\/\/wou.edu\/pure\/forms\/submission-view\/?gf_entry_id=${val.id}\" target=\"_blank\">View<\/a>\u00a0\u00a0<a href=\"https:\/\/wou.edu\/pure\/wp-admin\/admin.php?page=gf_entries&#038;view=entry&#038;id=${val.form_id}&#038;lid=${val.id}\" target=\"_blank\">Edit<\/a>`,<!-- [et_pb_line_break_holder] -->        ID: val.id,<!-- [et_pb_line_break_holder] -->        Title: val.session_title,<!-- [et_pb_line_break_holder] -->        Type: val[7],<!-- [et_pb_line_break_holder] -->        Chairs: val.chairs.join(\"; \"),<!-- [et_pb_line_break_holder] -->        \"Start Time\": getTimePicker(\"start_time\", val[31]),<!-- [et_pb_line_break_holder] -->        \"End Time\": getTimePicker(\"end_time\", val[32]),<!-- [et_pb_line_break_holder] -->        Location: getRooms(rooms, val[27]),<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    case \"chairs\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        Last: val.last,<!-- [et_pb_line_break_holder] -->        First: val.first,<!-- [et_pb_line_break_holder] -->        Email: val.email,<!-- [et_pb_line_break_holder] -->        Sessions: val.sessions.join(\"; \"),<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    case \"presentations\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        Actions: `<a href=\"https:\/\/wou.edu\/pure\/forms\/submissions\/?entryId=${val.id}\" target=\"_blank\">View<\/a>  <a href=\"https:\/\/wou.edu\/pure\/wp-admin\/admin.php?page=gf_entries&#038;view=entry&#038;id=${val.form_id}&#038;lid=${val.id}\" target=\"_blank\">Edit<\/a>`,<!-- [et_pb_line_break_holder] -->        ID: val.id,<!-- [et_pb_line_break_holder] -->        Title: val[7],<!-- [et_pb_line_break_holder] -->        Type: val[6],<!-- [et_pb_line_break_holder] -->        Mentors: val.mentors.join(\"; \"),<!-- [et_pb_line_break_holder] -->        \"Session\/Preferred Sessions\": getSessions(<!-- [et_pb_line_break_holder] -->          aesData.sessions,<!-- [et_pb_line_break_holder] -->          val.session_title,<!-- [et_pb_line_break_holder] -->          null,<!-- [et_pb_line_break_holder] -->        ), \/\/val.session_title,<!-- [et_pb_line_break_holder] -->        Presenters: val.presenters.join(\"; \"),<!-- [et_pb_line_break_holder] -->        \"Abstract\/File\": val.abstractContent,<!-- [et_pb_line_break_holder] -->        Approved: val[37],<!-- [et_pb_line_break_holder] -->        \"Potential Dup\": val.potentialDuplicate,<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    case \"presenters\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        vNumber: val[\"vNumber\"],<!-- [et_pb_line_break_holder] -->        Email: val[\"WOU Email\"],<!-- [et_pb_line_break_holder] -->        Last: val[\"Last Name\"],<!-- [et_pb_line_break_holder] -->        First: val[\"First Name\"],<!-- [et_pb_line_break_holder] -->        Presentations: val.presentations.join(\"; \"),<!-- [et_pb_line_break_holder] -->        \"Academic Standing\": val[\"Academic Standing\"],<!-- [et_pb_line_break_holder] -->        Major: val[\"Major\"],<!-- [et_pb_line_break_holder] -->        \"Home Town\": val[\"Home Town\"],<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    case \"mentors\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        Last: val.last,<!-- [et_pb_line_break_holder] -->        First: val.first,<!-- [et_pb_line_break_holder] -->        Email: val.email,<!-- [et_pb_line_break_holder] -->        Presentations: val.presentations.join(\"; \"),<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    case \"formattedSessions\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        Sesssion: val.session_title,<!-- [et_pb_line_break_holder] -->        Start: val[31],<!-- [et_pb_line_break_holder] -->        End: val[32],<!-- [et_pb_line_break_holder] -->        Location: val[27],<!-- [et_pb_line_break_holder] -->        Format: val[7],<!-- [et_pb_line_break_holder] -->        Chairs: val.chairs.join(\"; \"),<!-- [et_pb_line_break_holder] -->        Abstract: val?.abstractContent,<!-- [et_pb_line_break_holder] -->        Presentations: getSessionPresentations(val).events,<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    case \"schedule\":<!-- [et_pb_line_break_holder] -->      tableHeader = {<!-- [et_pb_line_break_holder] -->        \"Presentation\/Poster\": val.title,<!-- [et_pb_line_break_holder] -->        Presenters: val.presenter,<!-- [et_pb_line_break_holder] -->        Start: val.start,<!-- [et_pb_line_break_holder] -->        End: val.end,<!-- [et_pb_line_break_holder] -->        Location: val.place,<!-- [et_pb_line_break_holder] -->        Abstract: val.abstract,<!-- [et_pb_line_break_holder] -->        Session: val.session,<!-- [et_pb_line_break_holder] -->        Format: val.format,<!-- [et_pb_line_break_holder] -->        Mentors: val.mentors,<!-- [et_pb_line_break_holder] -->        \"Event Order\": val.order,<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      break;<!-- [et_pb_line_break_holder] -->    \/\/ ... more cases<!-- [et_pb_line_break_holder] -->    default:<!-- [et_pb_line_break_holder] -->    \/\/ Code to execute if no case matches<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  return tableHeader;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code admin_label=&#8221;function to add 12 hour time sorting for datatables&#8221; _builder_version=&#8221;4.27.2&#8243; _module_preset=&#8221;default&#8221; global_module=&#8221;24528&#8243; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->  function add12HrSort(){<!-- [et_pb_line_break_holder] -->    console.log('add 12 hr sort for datatables');<!-- [et_pb_line_break_holder] --> \/\/ Add a custom sorting method for 12-hour time format<!-- [et_pb_line_break_holder] -->      jQuery.fn.dataTable.ext.type.order[\"time-12h-pre\"] = function (timeStr) {<!-- [et_pb_line_break_holder] -->        \/\/ Check if we have a valid time string<!-- [et_pb_line_break_holder] -->        if (!timeStr || typeof timeStr !== \"string\") {<!-- [et_pb_line_break_holder] -->          return -Infinity; \/\/ Invalid times go to the top<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Handle various time formats by extracting components<!-- [et_pb_line_break_holder] -->        let timeParts = timeStr.match(\/(\\d+):?(\\d*)(?:\\s*)([AaPp][Mm])?\/);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (!timeParts) {<!-- [et_pb_line_break_holder] -->          return -Infinity; \/\/ Invalid format goes to the top<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        let hours = parseInt(timeParts[1], 10);<!-- [et_pb_line_break_holder] -->        let minutes = timeParts[2] ? parseInt(timeParts[2], 10) : 0;<!-- [et_pb_line_break_holder] -->        let ampm = timeParts[3] ? timeParts[3].toUpperCase() : \"AM\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Convert to 24-hour format for proper sorting<!-- [et_pb_line_break_holder] -->        if (ampm === \"PM\" && hours < 12) {<!-- [et_pb_line_break_holder] -->          hours += 12;<!-- [et_pb_line_break_holder] -->        } else if (ampm === \"AM\" && hours === 12) {<!-- [et_pb_line_break_holder] -->          hours = 0;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Return as minutes since midnight for sorting<!-- [et_pb_line_break_holder] -->        return hours * 60 + minutes;<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code disabled_on=&#8221;off|off|off&#8221; admin_label=&#8221;JS: Datatables buttons and config&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_module=&#8221;23500&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->\/* THIS IS A GLOBAL BLOCK *\/<!-- [et_pb_line_break_holder] -->\/\/scripts in this file are specific to datatables<!-- [et_pb_line_break_holder] -->\/\/default button content<!-- [et_pb_line_break_holder] -->let buttonsContent = {<!-- [et_pb_line_break_holder] -->  buttons: [<!-- [et_pb_line_break_holder] -->    \"copy\",<!-- [et_pb_line_break_holder] -->    \"csv\",<!-- [et_pb_line_break_holder] -->    \"excel\",<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      extend: \"pdf\",<!-- [et_pb_line_break_holder] -->      \/\/messageTop: `<img decoding=\"async\" src=\"${aesLogoFile}\" style=\"width:auto;max-heigth:100px;height:auto;\">`,<!-- [et_pb_line_break_holder] -->      exportOptions: {<!-- [et_pb_line_break_holder] -->        stripHtml: false,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      extend: \"print\",<!-- [et_pb_line_break_holder] -->      messageTop: `<img decoding=\"async\" src=\"${aesLogoFile}\" style=\"width:auto;height:auto;max-heigth:100px;max-width:95%;\">`,<!-- [et_pb_line_break_holder] -->      exportOptions: {<!-- [et_pb_line_break_holder] -->        stripHtml: false,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  ],<!-- [et_pb_line_break_holder] -->};<!-- [et_pb_line_break_holder] -->\/\/for online schedule limiters<!-- [et_pb_line_break_holder] -->let srchPaneButtons = {<!-- [et_pb_line_break_holder] -->  buttons: [<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      extend: \"searchPanes\",<!-- [et_pb_line_break_holder] -->      config: {<!-- [et_pb_line_break_holder] -->        cascadePanes: true,<!-- [et_pb_line_break_holder] -->        order: [<!-- [et_pb_line_break_holder] -->          \"Presenters\",<!-- [et_pb_line_break_holder] -->          \"Session\",<!-- [et_pb_line_break_holder] -->          \"Start\",<!-- [et_pb_line_break_holder] -->          \"Location\",<!-- [et_pb_line_break_holder] -->          \"Format\",<!-- [et_pb_line_break_holder] -->          \"Presentation\",<!-- [et_pb_line_break_holder] -->        ],<!-- [et_pb_line_break_holder] -->        layout: \"columns-2\",<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      text: \"Show\/Hide Details\",<!-- [et_pb_line_break_holder] -->      action: function (e, dt, node, config) {<!-- [et_pb_line_break_holder] -->        \/\/ alert('Button activated');<!-- [et_pb_line_break_holder] -->        console.log(\"click\");<!-- [et_pb_line_break_holder] -->        dt.rows(\":not(.parent)\")<!-- [et_pb_line_break_holder] -->          .nodes()<!-- [et_pb_line_break_holder] -->          .to$()<!-- [et_pb_line_break_holder] -->          .find(\"td:first-child\")<!-- [et_pb_line_break_holder] -->          .trigger(\"click\");<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      extend: \"print\",<!-- [et_pb_line_break_holder] -->      messageTop: `<img decoding=\"async\" src=\"${aesLogoFile}\" style=\"width:99%;height:auto;\">`,<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    \"excel\",<!-- [et_pb_line_break_holder] -->  ],<!-- [et_pb_line_break_holder] -->};<!-- [et_pb_line_break_holder] -->\/\/ Null-safe override of getAbstractContent.<!-- [et_pb_line_break_holder] -->function getAbstractContent(v) {<!-- [et_pb_line_break_holder] -->  if (<!-- [et_pb_line_break_holder] -->    v[21] &&<!-- [et_pb_line_break_holder] -->    v[21] != null &&<!-- [et_pb_line_break_holder] -->    typeof v[21] !== \"undefined\" &&<!-- [et_pb_line_break_holder] -->    v[21] !== \"\" &&<!-- [et_pb_line_break_holder] -->    v[21].match(\/https?:\\\/\\\/[^\\s]+\/g)<!-- [et_pb_line_break_holder] -->  ) {<!-- [et_pb_line_break_holder] -->    v[21] = `<a href=\"${v[21]}\" target=\"_blank\">View<\/a>`;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if (v[21] != null && typeof v[21] !== \"undefined\" && v[21] !== \"\")<!-- [et_pb_line_break_holder] -->    return v[21];<!-- [et_pb_line_break_holder] -->  if (<!-- [et_pb_line_break_holder] -->    v[22] &&<!-- [et_pb_line_break_holder] -->    v[22] != null &&<!-- [et_pb_line_break_holder] -->    typeof v[22] === \"object\" &&<!-- [et_pb_line_break_holder] -->    v[22][0] &&<!-- [et_pb_line_break_holder] -->    v[22][0].match(\/https\/i)<!-- [et_pb_line_break_holder] -->  ) {<!-- [et_pb_line_break_holder] -->    return `<a href=\"${v[22][0]}\" target=\"_blank\"><img decoding=\"async\" src=\"${v[22][0]}\" style=\"height:auto;max-height:400px;width:auto;\"><\/a>`;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/ Handle legacy case where v[22] is a string URL instead of an array.<!-- [et_pb_line_break_holder] -->  else if (v[22] != null && v[22] !== \"\") {<!-- [et_pb_line_break_holder] -->    return `<a href=\"https:\/\/drive.google.com\/open?id=${v[22]}\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/drive.google.com\/thumbnail?id=${v[22]}\" style=\"height:auto;max-height:400px;width:auto;\"><\/a>`;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  return \"Abstract\/Image not submitted\";<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function createTables(tableInfo, entryId, entry) {<!-- [et_pb_line_break_holder] -->  jQuery(\"#facet-buttons\").hide();<!-- [et_pb_line_break_holder] -->  var htmlTable = jQuery(tableInfo);<!-- [et_pb_line_break_holder] -->  var tableId = htmlTable.attr(\"id\");<!-- [et_pb_line_break_holder] -->  var today = new Date();<!-- [et_pb_line_break_holder] -->  var date =<!-- [et_pb_line_break_holder] -->    today.getFullYear() + \"-\" + (today.getMonth() + 1) + \"-\" + today.getDate();<!-- [et_pb_line_break_holder] -->  if (jQuery.fn.DataTable.isDataTable(`#${tableId}`)) {<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).DataTable().destroy();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  jQuery(`#${tableId}`).addClass(\"table-striped\");<!-- [et_pb_line_break_holder] -->  \/\/ Only include export buttons if the DataTables Buttons extension is loaded.<!-- [et_pb_line_break_holder] -->  const dtHasButtons = typeof jQuery.fn.DataTable.Buttons !== \"undefined\";<!-- [et_pb_line_break_holder] -->  let tableOptions = {<!-- [et_pb_line_break_holder] -->    \/*responsive: true,*\/<!-- [et_pb_line_break_holder] -->    layout: dtHasButtons ? { top: buttonsContent } : {},<!-- [et_pb_line_break_holder] -->    pageLength: 25,<!-- [et_pb_line_break_holder] -->    lengthMenu: [<!-- [et_pb_line_break_holder] -->      [10, 25, 50, -1],<!-- [et_pb_line_break_holder] -->      [10, 25, 50, \"All\"],<!-- [et_pb_line_break_holder] -->    ],<!-- [et_pb_line_break_holder] -->    language: {<!-- [et_pb_line_break_holder] -->      search: \"Search:\",<!-- [et_pb_line_break_holder] -->      searchPlaceholder: \"Begin typing to search\",<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    drawCallback: function (settings) {<!-- [et_pb_line_break_holder] -->      var page_min = 10;<!-- [et_pb_line_break_holder] -->      var thisApi = this.api();<!-- [et_pb_line_break_holder] -->      var pageInfo = thisApi.page.info();<!-- [et_pb_line_break_holder] -->      if (!pageInfo) return;<!-- [et_pb_line_break_holder] -->      var pages = pageInfo.pages;<!-- [et_pb_line_break_holder] -->      var rows = thisApi.data().length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Tailor the settings based on the row count<!-- [et_pb_line_break_holder] -->      if (rows <= page_min) {<!-- [et_pb_line_break_holder] -->        \/\/ Not enough rows for really any features, hide filter\/pagination\/length<!-- [et_pb_line_break_holder] -->        jQuery(`#${tableId}`)<!-- [et_pb_line_break_holder] -->          .next(\".dataTables_info\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"none\")<!-- [et_pb_line_break_holder] -->          .next(\".dataTables_paginate\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"none\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        jQuery(`#${tableId}`)<!-- [et_pb_line_break_holder] -->          .prev(\".dataTables_filter\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"none\")<!-- [et_pb_line_break_holder] -->          .prev(\".dataTables_length\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"none\");<!-- [et_pb_line_break_holder] -->      } else if (pages === 1) {<!-- [et_pb_line_break_holder] -->        \/\/ With this current length setting, not more than 1 page, hide pagination<!-- [et_pb_line_break_holder] -->        jQuery(`#${tableId}`)<!-- [et_pb_line_break_holder] -->          .next(\".dataTables_info\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"none\")<!-- [et_pb_line_break_holder] -->          .next(\".dataTables_paginate\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"none\");<!-- [et_pb_line_break_holder] -->      } else {<!-- [et_pb_line_break_holder] -->        \/\/ SHow everything<!-- [et_pb_line_break_holder] -->        jQuery(`#${tableId}`)<!-- [et_pb_line_break_holder] -->          .next(\".dataTables_info\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"block\")<!-- [et_pb_line_break_holder] -->          .next(\".dataTables_paginate\")<!-- [et_pb_line_break_holder] -->          .css(\"display\", \"block\");<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (entryId == \"formattedSessions\" || entryId == \"setSchedule\") {<!-- [et_pb_line_break_holder] -->    tableOptions.responsive = entryId === \"formattedSessions\";<!-- [et_pb_line_break_holder] -->    tableOptions.layout = {<!-- [et_pb_line_break_holder] -->      top: {<!-- [et_pb_line_break_holder] -->        search: {<!-- [et_pb_line_break_holder] -->          placeholder: \"Begin typing to search\",<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      topStart: \"info\",<!-- [et_pb_line_break_holder] -->      top2End: \"paging\",<!-- [et_pb_line_break_holder] -->      bottomStart: \"pageLength\",<!-- [et_pb_line_break_holder] -->      bottomEnd: \"search\",<!-- [et_pb_line_break_holder] -->      bottom2Start: \"info\",<!-- [et_pb_line_break_holder] -->      bottom: \"paging\",<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    if (entryId == \"setSchedule\") {<!-- [et_pb_line_break_holder] -->      tableOptions.layout.topEnd = srchPaneButtons;<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      tableOptions.layout.topEnd = \"\";<!-- [et_pb_line_break_holder] -->      \/\/ tableOptions.layout.topEnd = buttonsContent;<!-- [et_pb_line_break_holder] -->      tableOptions.drawCallback = function (settings) {<!-- [et_pb_line_break_holder] -->        createFacetButtons(tags, this.api());<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    tableOptions.language = {<!-- [et_pb_line_break_holder] -->      searchPanes: {<!-- [et_pb_line_break_holder] -->        clearMessage: \"Clear Selections\",<!-- [et_pb_line_break_holder] -->        collapse: {<!-- [et_pb_line_break_holder] -->          0: \"Filter Results\",<!-- [et_pb_line_break_holder] -->          _: \"Filter Results (%d)\",<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      search: \"Search:\",<!-- [et_pb_line_break_holder] -->      searchPlaceholder: \"Enter text to search for\",<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    tableOptions.fixedHeader = true;<!-- [et_pb_line_break_holder] -->    tableOptions.responsive = entryId === \"formattedSessions\";<!-- [et_pb_line_break_holder] -->    tableOptions.scrollX = entryId === \"setSchedule\";<!-- [et_pb_line_break_holder] -->    tableOptions.pageLength = 25;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if (tableId == \"presentationorder\") {<!-- [et_pb_line_break_holder] -->    \/\/ Presentation ordering uses jQuery UI Sortable (initialized in getSessionOrder) \u2014 skip DataTables.<!-- [et_pb_line_break_holder] -->    return;<!-- [et_pb_line_break_holder] -->  } else if (entryId == \"formattedSessions\") {<!-- [et_pb_line_break_holder] -->    let addtlTableOptions = getSessionDisplayTableOption(tableId);<!-- [et_pb_line_break_holder] -->    tableOptions = { ...tableOptions, ...addtlTableOptions };<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).addClass(\"card\");<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).addClass(\"sessionCards\");<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).removeClass(\"table-striped\");<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).attr(\"border\", 0);<!-- [et_pb_line_break_holder] -->  } else if (entryId == \"setSchedule\") {<!-- [et_pb_line_break_holder] -->    let addtlTableOptions = getScheduleTableOptions();<!-- [et_pb_line_break_holder] -->    tableOptions = { ...tableOptions, ...addtlTableOptions };<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).removeClass(\"card\");<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).removeClass(\"sessionCards\");<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).addClass(\"table-striped\");<!-- [et_pb_line_break_holder] -->    \/\/jQuery(`#${tableId}`).attr(\"border\", 0);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/ Normalise column counts so GF list-field tables don't crash DataTables.<!-- [et_pb_line_break_holder] -->  var _ref = jQuery(tableInfo).find(\"thead tr\").first();<!-- [et_pb_line_break_holder] -->  if (!_ref.length) _ref = jQuery(tableInfo).find(\"tr\").first();<!-- [et_pb_line_break_holder] -->  var _headerCount = _ref.find(\"th, td\").length;<!-- [et_pb_line_break_holder] -->  if (_headerCount > 0) {<!-- [et_pb_line_break_holder] -->    jQuery(tableInfo)<!-- [et_pb_line_break_holder] -->      .children(\"thead, tbody\")<!-- [et_pb_line_break_holder] -->      .children(\"tr\")<!-- [et_pb_line_break_holder] -->      .each(function () {<!-- [et_pb_line_break_holder] -->        var _cells = jQuery(this).children(\"td, th\");<!-- [et_pb_line_break_holder] -->        if (_cells.length > _headerCount) {<!-- [et_pb_line_break_holder] -->          _cells.slice(_headerCount).remove();<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  let table;<!-- [et_pb_line_break_holder] -->  try {<!-- [et_pb_line_break_holder] -->    if (<!-- [et_pb_line_break_holder] -->      jQuery(tableInfo).find(\"th\").length > 0 &&<!-- [et_pb_line_break_holder] -->      jQuery(tableInfo).find(\"tbody\").length > 0<!-- [et_pb_line_break_holder] -->    ) {<!-- [et_pb_line_break_holder] -->      table = jQuery(tableInfo).DataTable(tableOptions);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  } catch (e) {<!-- [et_pb_line_break_holder] -->    console.warn(\"[AES] DataTables init failed for\", tableId, e.message);<!-- [et_pb_line_break_holder] -->    return;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (entryId == \"formattedSessions\") {<!-- [et_pb_line_break_holder] -->    jQuery(\"#facet-buttons\").show();<!-- [et_pb_line_break_holder] -->    table<!-- [et_pb_line_break_holder] -->      .order([<!-- [et_pb_line_break_holder] -->        [1, \"asc\"],<!-- [et_pb_line_break_holder] -->        [0, \"asc\"],<!-- [et_pb_line_break_holder] -->        [4, \"asc\"],<!-- [et_pb_line_break_holder] -->      ])<!-- [et_pb_line_break_holder] -->      .draw(false);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery(document).on(\"keyup change\", \".searchHeader\", function () {<!-- [et_pb_line_break_holder] -->    let i = jQuery(this).parents(\"th\")[0].cellIndex;<!-- [et_pb_line_break_holder] -->    if (this.value != \"\") {<!-- [et_pb_line_break_holder] -->      jQuery(\".dt-search\").hide();<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      jQuery(\".dt-search\").show();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    if (table.column(i).search() !== this.value) {<!-- [et_pb_line_break_holder] -->      table.column(i).search(this.value).draw();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function getSessionDisplayTableOption(tableId) {<!-- [et_pb_line_break_holder] -->  return {<!-- [et_pb_line_break_holder] -->    columnDefs: [<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Session\",<!-- [et_pb_line_break_holder] -->        targets: [0],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Session\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->          order: 2,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Location\",<!-- [et_pb_line_break_holder] -->        targets: [3],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Location\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: true,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Start\",<!-- [et_pb_line_break_holder] -->        targets: [1],<!-- [et_pb_line_break_holder] -->        type: \"time-12h\",<!-- [et_pb_line_break_holder] -->        className: \"timeRow\",<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Start\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: true,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"End\",<!-- [et_pb_line_break_holder] -->        type: \"time-12h\",<!-- [et_pb_line_break_holder] -->        className: \"timeRow\",<!-- [et_pb_line_break_holder] -->        targets: [2],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"End\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Format\",<!-- [et_pb_line_break_holder] -->        targets: [4],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Format\",<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Presenters\",<!-- [et_pb_line_break_holder] -->        targets: [5],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Presenters\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Abstract\",<!-- [et_pb_line_break_holder] -->        targets: [6],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Abstract\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Presentations\",<!-- [et_pb_line_break_holder] -->        targets: [7],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Presentations\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \/\/targets: \"_all\",<!-- [et_pb_line_break_holder] -->        targets: [7],<!-- [et_pb_line_break_holder] -->        \/\/className: \"truncate\",<!-- [et_pb_line_break_holder] -->        \/\/render: ellipsit(300, true, false),<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    ],<!-- [et_pb_line_break_holder] -->    pageLength: 50,<!-- [et_pb_line_break_holder] -->    order: [<!-- [et_pb_line_break_holder] -->      [1, \"asc\"],<!-- [et_pb_line_break_holder] -->      [0, \"asc\"],<!-- [et_pb_line_break_holder] -->      [4, \"asc\"],<!-- [et_pb_line_break_holder] -->    ],<!-- [et_pb_line_break_holder] -->    rowCallback: function (row, data) {<!-- [et_pb_line_break_holder] -->      jQuery(row).addClass(\"flex-grid\");<!-- [et_pb_line_break_holder] -->      let replaceFields = {<!-- [et_pb_line_break_holder] -->        Session: \"<\/p>\n<h2>{Session}<\/h2>\n<p>\",<!-- [et_pb_line_break_holder] -->        Start: \"{Start}\",<!-- [et_pb_line_break_holder] -->        End: \"{End}\",<!-- [et_pb_line_break_holder] -->        Location: \"<\/p>\n<dt>Location<\/dt>\n<dd>{Location}<\/dd>\n<p>\",<!-- [et_pb_line_break_holder] -->        Format: \"<\/p>\n<dt>Format<\/dt>\n<dd>{Format}<\/dd>\n<p>\",<!-- [et_pb_line_break_holder] -->        Chairs: \"<\/p>\n<dt>Session Chairs<\/dt>\n<dd>{Chairs}<\/dd>\n<p>\",<!-- [et_pb_line_break_holder] -->        Abstract: \"<\/p>\n<dt>Description<\/dt>\n<dd>{Abstract}<\/dd>\n<p>\",<!-- [et_pb_line_break_holder] -->        Presentations:<!-- [et_pb_line_break_holder] -->          '<\/p>\n<dt>\n<h3 style=\"font-weight:bold;margin-top:1em;\">Presentations<\/p>\n<h3><\/dt>\n<dd>{Presentations}<\/dd>\n<p>',<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      var labels = Object.keys(replaceFields);<!-- [et_pb_line_break_holder] -->      \/\/jQuery(\"#cv\").on(\"click\", function () {<!-- [et_pb_line_break_holder] -->      jQuery.each(labels, function (k, v) {<!-- [et_pb_line_break_holder] -->        let newData =<!-- [et_pb_line_break_holder] -->          data[k] != \"\"<!-- [et_pb_line_break_holder] -->            ? replaceFields[labels[k]].replace(`{${labels[k]}}`, data[k])<!-- [et_pb_line_break_holder] -->            : \"\";<!-- [et_pb_line_break_holder] -->        if (labels[k] != \"End\") {<!-- [et_pb_line_break_holder] -->          jQuery(`td:eq(${k})`, row).html(newData);<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->          jQuery(`td:eq(${k})`, row).html(` - ${data[k]}`);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  };<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function getScheduleTableOptions() {<!-- [et_pb_line_break_holder] -->  let presenterVals = viewPresenters(false, true);<!-- [et_pb_line_break_holder] -->  let presenterOptions = [];<!-- [et_pb_line_break_holder] -->  jQuery.each(presenterVals, function (k, v) {<!-- [et_pb_line_break_holder] -->    presenterOptions.push({<!-- [et_pb_line_break_holder] -->      label: `${v.Last}, ${v.First}`,<!-- [et_pb_line_break_holder] -->      value: function (rowData, rowIdx) {<!-- [et_pb_line_break_holder] -->        return rowData[1].includes(`${v.First} ${v.Last}`);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  return {<!-- [et_pb_line_break_holder] -->    autoWidth: false,<!-- [et_pb_line_break_holder] -->    columnDefs: [<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Presentation\",<!-- [et_pb_line_break_holder] -->        targets: [0],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Presentation\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Presenters\",<!-- [et_pb_line_break_holder] -->        targets: [1],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Presenters\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->          options: presenterOptions,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Start\",<!-- [et_pb_line_break_holder] -->        targets: [2],<!-- [et_pb_line_break_holder] -->        type: \"time-12h\",<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Start\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: true,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        } \/*,<!-- [et_pb_line_break_holder] -->              render: function (data, type, row) {<!-- [et_pb_line_break_holder] -->                  \/\/What the user can physically see can be different than what is sorted on; Use moment.js library or whatever<!-- [et_pb_line_break_holder] -->                  return moment(data).format('h:mm A');<!-- [et_pb_line_break_holder] -->              }*\/,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"End\",<!-- [et_pb_line_break_holder] -->        type: \"time-12h\",<!-- [et_pb_line_break_holder] -->        targets: [3],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"End\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        } \/*,<!-- [et_pb_line_break_holder] -->              render: function (data, type, row) {<!-- [et_pb_line_break_holder] -->                  \/\/What the user can physically see can be different than what is sorted on; Use moment.js library or whatever<!-- [et_pb_line_break_holder] -->                  return moment(data).format('h:mm A');<!-- [et_pb_line_break_holder] -->              }*\/,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Location\",<!-- [et_pb_line_break_holder] -->        targets: [4],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Location\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: true,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Abstract\",<!-- [et_pb_line_break_holder] -->        targets: [5],<!-- [et_pb_line_break_holder] -->        width: 250,<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Abstract\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Session\",<!-- [et_pb_line_break_holder] -->        targets: [6],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Session\",<!-- [et_pb_line_break_holder] -->          show: true,<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->          order: 2,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Format\",<!-- [et_pb_line_break_holder] -->        targets: [7],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Format\",<!-- [et_pb_line_break_holder] -->          orderable: false,<!-- [et_pb_line_break_holder] -->          collapse: true,<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Mentors\",<!-- [et_pb_line_break_holder] -->        targets: [8],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        name: \"Session_Order\",<!-- [et_pb_line_break_holder] -->        targets: [9],<!-- [et_pb_line_break_holder] -->        searchPanes: {<!-- [et_pb_line_break_holder] -->          name: \"Session Order\",<!-- [et_pb_line_break_holder] -->          show: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \/\/targets: \"_all\",<!-- [et_pb_line_break_holder] -->        targets: [5],<!-- [et_pb_line_break_holder] -->        className: \"truncate\",<!-- [et_pb_line_break_holder] -->        render: ellipsit(350, true, false),<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    ],<!-- [et_pb_line_break_holder] -->    order: [<!-- [et_pb_line_break_holder] -->      [2, \"asc\"],<!-- [et_pb_line_break_holder] -->      [6, \"asc\"],<!-- [et_pb_line_break_holder] -->      [9, \"asc\"],<!-- [et_pb_line_break_holder] -->      [0, \"asc\"],<!-- [et_pb_line_break_holder] -->    ],<!-- [et_pb_line_break_holder] -->  };<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/ Function to update filters<!-- [et_pb_line_break_holder] -->function updateFilters(table) {<!-- [et_pb_line_break_holder] -->  table.search(\"\").columns().search(\"\").draw();<!-- [et_pb_line_break_holder] -->  var selectedValue = jQuery(\"#facetSearch\").val();<!-- [et_pb_line_break_holder] -->  table.column(0).search(selectedValue);<!-- [et_pb_line_break_holder] -->  \/* jQuery(\".facet-button\").each(function () {<!-- [et_pb_line_break_holder] -->          let columnIndex = 0;<!-- [et_pb_line_break_holder] -->          let filter = jQuery(this).text();<!-- [et_pb_line_break_holder] -->          if (jQuery(this).hasClass(\"active\")) {<!-- [et_pb_line_break_holder] -->            table.column(columnIndex).search(filter);<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->        });*\/<!-- [et_pb_line_break_holder] -->  \/\/ Redraw the table<!-- [et_pb_line_break_holder] -->  table.draw();<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function createFacetButtons(facets, table) {<!-- [et_pb_line_break_holder] -->  facets.sort((a, b) => a.localeCompare(b, \"en\", { sensitivity: \"base\" }));<!-- [et_pb_line_break_holder] -->  const facetButtonsContainer = jQuery(\"#facet-buttons\");<!-- [et_pb_line_break_holder] -->  if (jQuery(\"#facet-buttons\").text().length == 0) {<!-- [et_pb_line_break_holder] -->    jQuery(\"#facet-buttons\").append(<!-- [et_pb_line_break_holder] -->      '<select id=\"facetSearch\"><option value=\"\">All Sessions<\/option><\/select>',<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->    jQuery(\"#facetSearch\").on(\"change\", function () {<!-- [et_pb_line_break_holder] -->      updateFilters(table);<!-- [et_pb_line_break_holder] -->      jQuery(\"#dt-search-2\").focus();<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    facets.forEach((facet) => {<!-- [et_pb_line_break_holder] -->      var option = new Option(facet, facet);<!-- [et_pb_line_break_holder] -->      jQuery(\"#facetSearch\").append(option);<!-- [et_pb_line_break_holder] -->      \/*const button = jQuery('<button><\/button>')<!-- [et_pb_line_break_holder] -->              .addClass(\"facet-button\")<!-- [et_pb_line_break_holder] -->              .text(facet)<!-- [et_pb_line_break_holder] -->              .attr(\"data-facet\", facet)<!-- [et_pb_line_break_holder] -->              .on(\"click\", function (e) {<!-- [et_pb_line_break_holder] -->                e.preventDefault();<!-- [et_pb_line_break_holder] -->                jQuery(this).toggleClass(\"active\");<!-- [et_pb_line_break_holder] -->                console.log(jQuery(this));<!-- [et_pb_line_break_holder] -->                updateFilters(table);<!-- [et_pb_line_break_holder] -->                jQuery('#dt-search-2').focus();<!-- [et_pb_line_break_holder] -->              });<!-- [et_pb_line_break_holder] -->            facetButtonsContainer.append(button);*\/<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code disabled_on=&#8221;off|off|off&#8221; admin_label=&#8221;JS functions for table displays&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_module=&#8221;24951&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->\/*<!-- [et_pb_line_break_holder] -->THIS IS A GLOBAL BLOCK<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*formattedSessions<!-- [et_pb_line_break_holder] -->Creates the formatted the sessions and presentations for print view. Calls formatPresentations<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*formatPresentations<!-- [et_pb_line_break_holder] -->Formats presentations in a session for print view<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*viewSessions, viewSessionChairs, viewPresentations, viewPresenters, and viewMentors<!-- [et_pb_line_break_holder] -->Table view of submitted items or lists <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*updataeOrder, orderEntries<!-- [et_pb_line_break_holder] -->*\/<!-- [et_pb_line_break_holder] -->\/*adminFields(type, form)*\/<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/function to creat list of people (mntors, presenters, etc.) for display<!-- [et_pb_line_break_holder] -->function getPersonList(valContent, joinWith, val1, val2) {<!-- [et_pb_line_break_holder] -->  let personArray = [];<!-- [et_pb_line_break_holder] -->  if (typeof valContent == \"object\") {<!-- [et_pb_line_break_holder] -->    jQuery.each(valContent, function (k, v) {<!-- [et_pb_line_break_holder] -->      personArray.push(v[val1] + joinWith + v[val2]);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    personArray.push(valContent);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  return personArray;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/function to populate the tables<!-- [et_pb_line_break_holder] -->function popTableData(i, val, data) {<!-- [et_pb_line_break_holder] -->  if (i < 1) {<!-- [et_pb_line_break_holder] -->    let header = `<\/p>\n<tr>\n<th>${Object.keys(data).join(\"<\/th>\n<th>\")}<\/th>\n<\/tr>\n<p>`;<!-- [et_pb_line_break_holder] -->    jQuery(\"#aesTable thead\").append(header);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  let tableRow = `<\/p>\n<tr id=\"rowId${val.id}\">\n<td>${Object.values(data).join(<!-- [et_pb_line_break_holder] -->    \"<\/td>\n<td>\",<!-- [et_pb_line_break_holder] -->  )}<\/td>\n<\/tr>\n<p>`;<!-- [et_pb_line_break_holder] -->  jQuery(\"#aesTable > tbody\").append(tableRow);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/view sessions<!-- [et_pb_line_break_holder] -->function viewSessions(archived) {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] -->  jQuery(\"#aesContent\").prepend(`<\/p>\n<h3>Submitted Sessions<\/h3>\n<p>`);<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.sessions, function (key, val) {<!-- [et_pb_line_break_holder] -->    const entryDate = new Date(val.date_created);<!-- [et_pb_line_break_holder] -->    const entryYear = entryDate.getFullYear();<!-- [et_pb_line_break_holder] -->    if (<!-- [et_pb_line_break_holder] -->      val &&<!-- [et_pb_line_break_holder] -->      Object.keys(val).length > 0 &&<!-- [et_pb_line_break_holder] -->      (entryYear == viewYear || viewYear == \"all\" || archived == \"yes\")<!-- [et_pb_line_break_holder] -->    ) {<!-- [et_pb_line_break_holder] -->      val.tmpChairs = val.chairs;<!-- [et_pb_line_break_holder] -->      val.chairs = getPersonList(val.chairs, \", \", \"last\", \"first\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      let data = getHeaders(\"sessions\", val);<!-- [et_pb_line_break_holder] -->      popTableData(i, val, data);<!-- [et_pb_line_break_holder] -->      val.chairs = val.tmpChairs;<!-- [et_pb_line_break_holder] -->      i++;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  setTimePickers();<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/formatted sessions<!-- [et_pb_line_break_holder] -->function formattedSessions(archived) {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.sessions, function (key, val) {<!-- [et_pb_line_break_holder] -->    const entryDate = new Date(val.date_created);<!-- [et_pb_line_break_holder] -->    const entryYear = entryDate.getFullYear();<!-- [et_pb_line_break_holder] -->    if (<!-- [et_pb_line_break_holder] -->      val &&<!-- [et_pb_line_break_holder] -->      Object.keys(val).length > 0 &&<!-- [et_pb_line_break_holder] -->      (entryYear == viewYear || viewYear == \"all\" || archived == \"yes\")<!-- [et_pb_line_break_holder] -->    ) {<!-- [et_pb_line_break_holder] -->      val.tmpChairs = val.chairs;<!-- [et_pb_line_break_holder] -->      val.chairs = getPersonList(val.chairs || {}, \", \", \"last\", \"first\");<!-- [et_pb_line_break_holder] -->      val.abstractContent = val[10] || \"\";<!-- [et_pb_line_break_holder] -->      if (val[26] && Object.keys(val[26]).length > 0) {<!-- [et_pb_line_break_holder] -->        val.presentations = orderPresentations(val);<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      let data = getHeaders(\"formattedSessions\", val);<!-- [et_pb_line_break_holder] -->      if (data.Sesssion && !tags.includes(data.Sesssion.trim())) {<!-- [et_pb_line_break_holder] -->        tags.push(data.Sesssion.trim());<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      popTableData(i, val, data);<!-- [et_pb_line_break_holder] -->      val.chairs = val.tmpChairs;<!-- [et_pb_line_break_holder] -->      i++;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/view a list of session chairs<!-- [et_pb_line_break_holder] -->function viewSessionChairs(archived) {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] -->  jQuery(\"#aesContent\").prepend(`<\/p>\n<h4>Session Chairs<\/h4>\n<p>`);<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.chairList, function (key, val) {<!-- [et_pb_line_break_holder] -->    \/\/fix to get only current chairs<!-- [et_pb_line_break_holder] -->    let data = getHeaders(\"chairs\", val);<!-- [et_pb_line_break_holder] -->    popTableData(i, val, data);<!-- [et_pb_line_break_holder] -->    i++;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/view the presentations. May be limited to show only those missing abstracts<!-- [et_pb_line_break_holder] -->function viewPresentations(archived, missingAbstract) {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Pre-pass: find titles that appear more than once (potential duplicates)<!-- [et_pb_line_break_holder] -->  let titleCount = {};<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.presentations, function (key, val) {<!-- [et_pb_line_break_holder] -->    const entryDate = new Date(val.date_created);<!-- [et_pb_line_break_holder] -->    const entryYear = entryDate.getFullYear();<!-- [et_pb_line_break_holder] -->    if (val && Object.keys(val).length > 0 && val[\"39.1\"] != \"Yes\") {<!-- [et_pb_line_break_holder] -->      if (archived || (!archived && (entryYear == viewYear || viewYear == \"all\"))) {<!-- [et_pb_line_break_holder] -->        let t = (val[7] || \"\").trim().toLowerCase();<!-- [et_pb_line_break_holder] -->        if (t) titleCount[t] = (titleCount[t] || 0) + 1;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery(\"#aesContent\").prepend(`<\/p>\n<h4>Presentations<\/h4>\n<p>`);<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.presentations, function (key, val) {<!-- [et_pb_line_break_holder] -->    const entryDate = new Date(val.date_created);<!-- [et_pb_line_break_holder] -->    const entryYear = entryDate.getFullYear();<!-- [et_pb_line_break_holder] -->    if (val && Object.keys(val).length > 0 && val[\"39.1\"] != \"Yes\") {<!-- [et_pb_line_break_holder] -->      \/\/not duplicate<!-- [et_pb_line_break_holder] -->      if (<!-- [et_pb_line_break_holder] -->        archived ||<!-- [et_pb_line_break_holder] -->        (!archived && (entryYear == viewYear || viewYear == \"all\"))<!-- [et_pb_line_break_holder] -->      ) {<!-- [et_pb_line_break_holder] -->        val.mentorList = val?.mentors || [];<!-- [et_pb_line_break_holder] -->        val.abstractContent = getAbstractContent(val);<!-- [et_pb_line_break_holder] -->        val.potentialDuplicate = titleCount[(val[7] || \"\").trim().toLowerCase()] > 1 ? \"Yes\" : \"\";<!-- [et_pb_line_break_holder] -->        if (<!-- [et_pb_line_break_holder] -->          (!missingAbstract ||<!-- [et_pb_line_break_holder] -->            (missingAbstract &&<!-- [et_pb_line_break_holder] -->              val.abstractContent.match(\/abstract.*not submitted\/i))) &&<!-- [et_pb_line_break_holder] -->          jQuery(`#rowId${val.id}`).length == 0<!-- [et_pb_line_break_holder] -->        ) {<!-- [et_pb_line_break_holder] -->          val.mentors = getPersonList(val.mentorList, \", \", \"last\", \"first\");<!-- [et_pb_line_break_holder] -->          val.presenters = getPersonList(<!-- [et_pb_line_break_holder] -->            val[4],<!-- [et_pb_line_break_holder] -->            \", \",<!-- [et_pb_line_break_holder] -->            \"Last Name\",<!-- [et_pb_line_break_holder] -->            \"First Name\",<!-- [et_pb_line_break_holder] -->          );<!-- [et_pb_line_break_holder] -->          let data = getHeaders(\"presentations\", val);<!-- [et_pb_line_break_holder] -->          popTableData(i, val, data);<!-- [et_pb_line_break_holder] -->          i++;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/view a list of presenters<!-- [et_pb_line_break_holder] -->function viewPresenters(archived, noBanner) {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] -->  let presenterData = [];<!-- [et_pb_line_break_holder] -->  if (typeof noBanner == \"undefined\" || !noBanner) {<!-- [et_pb_line_break_holder] -->    jQuery(\"#aesContent\").prepend(`<\/p>\n<h4>Presenters<\/h4>\n<p>`);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.presenterList, function (k, v) {<!-- [et_pb_line_break_holder] -->    v.id = k;<!-- [et_pb_line_break_holder] -->    let data = getHeaders(\"presenters\", v);<!-- [et_pb_line_break_holder] -->    if (typeof noBanner == \"undefined\" || !noBanner) {<!-- [et_pb_line_break_holder] -->      popTableData(i, v, data);<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      presenterData.push(data);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    i++;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  return presenterData;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/\/\/view a list of mentors<!-- [et_pb_line_break_holder] -->function viewMentors(archived) {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] -->  jQuery(\"#aesContent\").prepend(`<\/p>\n<h4>Mentors<\/h4>\n<p>`);<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.mentorList, function (k, v) {<!-- [et_pb_line_break_holder] -->    \/\/fix for current year only<!-- [et_pb_line_break_holder] -->    v.id = k;<!-- [et_pb_line_break_holder] -->    let data = getHeaders(\"mentors\", v);<!-- [et_pb_line_break_holder] -->    popTableData(i, v, data);<!-- [et_pb_line_break_holder] -->    i++;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/function to get all of the presentations associated with a session. Still used<!-- [et_pb_line_break_holder] -->function getSessionPresentations(v) {<!-- [et_pb_line_break_holder] -->  \/\/if (typeof v[\"21.1\"] == \"undefined\" || v[\"21.1\"] != \"Yes\") {<!-- [et_pb_line_break_holder] -->  v.place =<!-- [et_pb_line_break_holder] -->    typeof v[27] != \"undefined\" && v[27] != \"Other\"<!-- [et_pb_line_break_holder] -->      ? v[27]<!-- [et_pb_line_break_holder] -->      : typeof v[28] != \"undefined\" && v[28] == \"Other\"<!-- [et_pb_line_break_holder] -->        ? v[28]<!-- [et_pb_line_break_holder] -->        : \"TBD\";<!-- [et_pb_line_break_holder] -->  v.events = \"\";<!-- [et_pb_line_break_holder] -->  if (v[26] && Object.keys(v[26]).length > 0) {<!-- [et_pb_line_break_holder] -->    v.presentations = orderPresentations(v); \/\/newPresObj;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  jQuery.each(v?.presentations, function (k2, v2) {<!-- [et_pb_line_break_holder] -->    title = v2[7];<!-- [et_pb_line_break_holder] -->    v.events += '<pee style=\"margin-bottom:1em;\">';<!-- [et_pb_line_break_holder] -->    v.events += `<strong>${title}<\/strong>`;<!-- [et_pb_line_break_holder] -->    v.events += \"<!\u2013- [et_pb_br_holder] -\u2013>\";<!-- [et_pb_line_break_holder] -->    let presenterArray = getPersonList(v2[4], \" \", \"First Name\", \"Last Name\");<!-- [et_pb_line_break_holder] -->    v.events += \"<strong>Presenters: <\/strong>\" + presenterArray.join(\", \");<!-- [et_pb_line_break_holder] -->    v.events += \"<!\u2013- [et_pb_br_holder] -\u2013>\";<!-- [et_pb_line_break_holder] -->    v.events += getAbstractContent(v2);<!-- [et_pb_line_break_holder] -->    v.events += \"<!\u2013- [et_pb_br_holder] -\u2013>\";<!-- [et_pb_line_break_holder] -->    let mentorArray = getPersonList(v2.mentors, \" \", \"first\", \"last\");<!-- [et_pb_line_break_holder] -->    v.events += \"<em>Mentors: \" + mentorArray.join(\", \") + \"<\/em>\";<!-- [et_pb_line_break_holder] -->    v.events += \"<!\u2013- [et_pb_br_holder] -\u2013>\";<!-- [et_pb_line_break_holder] -->    v.events += \"<\/pee>\";<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  \/\/ }<!-- [et_pb_line_break_holder] -->  return v;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function setSchedule() {<!-- [et_pb_line_break_holder] -->  let i = 0;<!-- [et_pb_line_break_holder] -->  jQuery.each(aesData.sessions, function (k, v) {<!-- [et_pb_line_break_holder] -->    if (typeof v[\"34.1\"] !== \"undefined\" && v[\"34.1\"] === \"Yes\") return;<!-- [et_pb_line_break_holder] -->    \/\/ Strict year filter: skip if date is set and doesn't match viewYear<!-- [et_pb_line_break_holder] -->    if (v.date_created) {<!-- [et_pb_line_break_holder] -->      const entryYear = new Date(v.date_created).getFullYear();<!-- [et_pb_line_break_holder] -->      if (viewYear != \"all\" && entryYear != viewYear) return;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let sessionMentors = [];<!-- [et_pb_line_break_holder] -->    let title = \"\";<!-- [et_pb_line_break_holder] -->    let presentations = {};<!-- [et_pb_line_break_holder] -->    if (v[26] && Object.keys(v[26]).length > 0) {<!-- [et_pb_line_break_holder] -->      v.presentations = orderPresentations(v);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    presentations.start =<!-- [et_pb_line_break_holder] -->      typeof v[31] != \"undefined\" && v[31] != \"\"<!-- [et_pb_line_break_holder] -->        ? v[31].toUpperCase().replace(\" \", \"\")<!-- [et_pb_line_break_holder] -->        : \"\";<!-- [et_pb_line_break_holder] -->    presentations.end =<!-- [et_pb_line_break_holder] -->      typeof v[32] != \"undefined\" && v[32] != \"\"<!-- [et_pb_line_break_holder] -->        ? v[32].toUpperCase().replace(\" \", \"\")<!-- [et_pb_line_break_holder] -->        : \"\";<!-- [et_pb_line_break_holder] -->    presentations.place =<!-- [et_pb_line_break_holder] -->      typeof v[27] != \"undefined\" && v[27] != \"Other\"<!-- [et_pb_line_break_holder] -->        ? v[27]<!-- [et_pb_line_break_holder] -->        : typeof v[28] != \"undefined\" && v[28] == \"Other\"<!-- [et_pb_line_break_holder] -->          ? v[28]<!-- [et_pb_line_break_holder] -->          : \"TBD\";<!-- [et_pb_line_break_holder] -->    presentations.session = v[1];<!-- [et_pb_line_break_holder] -->    presentations.format = v[7];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Add session header row for real form entries<!-- [et_pb_line_break_holder] -->    if (v.form_id) {<!-- [et_pb_line_break_holder] -->      title = v[1];<!-- [et_pb_line_break_holder] -->      presentations.title = `<strong>${title}<\/strong>`;<!-- [et_pb_line_break_holder] -->      let chairName = ((v[\"22.3\"] || \"\") + \" \" + (v[\"22.6\"] || \"\")).trim();<!-- [et_pb_line_break_holder] -->      presentations.presenter = chairName;<!-- [et_pb_line_break_holder] -->      if (typeof v[3] == \"object\" && v[3]) {<!-- [et_pb_line_break_holder] -->        let extraChairs = getPersonList(v[3], \" \", \"First Name\", \"Last Name\");<!-- [et_pb_line_break_holder] -->        if (extraChairs.length) {<!-- [et_pb_line_break_holder] -->          presentations.presenter += (chairName ? \", \" : \"\") + extraChairs.join(\", \");<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      presentations.abstract = v[10] || \"\";<!-- [et_pb_line_break_holder] -->      presentations.mentors = \"\";<!-- [et_pb_line_break_holder] -->      presentations.order = \"\";<!-- [et_pb_line_break_holder] -->      let sessionHeaderData = getHeaders(\"schedule\", presentations);<!-- [et_pb_line_break_holder] -->      popTableData(i, v, sessionHeaderData);<!-- [et_pb_line_break_holder] -->      i++;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (v.presentations && Object.keys(v.presentations).length > 0) {<!-- [et_pb_line_break_holder] -->      jQuery.each(v?.presentations, function (k2, v2) {<!-- [et_pb_line_break_holder] -->        if (v2[\"39.1\"] != \"Yes\") {<!-- [et_pb_line_break_holder] -->          \/\/ Strict year filter for presentations (allow undefined dates)<!-- [et_pb_line_break_holder] -->          if (viewYear != \"all\" && v2.date_created) {<!-- [et_pb_line_break_holder] -->            const presYear = new Date(v2.date_created).getFullYear();<!-- [et_pb_line_break_holder] -->            if (presYear != viewYear) return;<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          title = v2[7];<!-- [et_pb_line_break_holder] -->          presentations.title = `<strong>${title}<\/strong>`;<!-- [et_pb_line_break_holder] -->          presentations.abstract = getAbstractContent(v2);<!-- [et_pb_line_break_holder] -->          let presenterArray = getPersonList(<!-- [et_pb_line_break_holder] -->            v2[4],<!-- [et_pb_line_break_holder] -->            \" \",<!-- [et_pb_line_break_holder] -->            \"First Name\",<!-- [et_pb_line_break_holder] -->            \"Last Name\",<!-- [et_pb_line_break_holder] -->          );<!-- [et_pb_line_break_holder] -->          presentations.presenter = presenterArray.join(\", \");<!-- [et_pb_line_break_holder] -->          let mentorArray = getPersonList(v2.mentors, \" \", \"first\", \"last\");<!-- [et_pb_line_break_holder] -->          if (!sessionMentors.includes(mentorArray)) {<!-- [et_pb_line_break_holder] -->            sessionMentors.push(mentorArray);<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          presentations.mentors = mentorArray.join(\", \");<!-- [et_pb_line_break_holder] -->          presentations.order = v2[\"Display Order\"] || \"\";<!-- [et_pb_line_break_holder] -->          let data = getHeaders(\"schedule\", presentations);<!-- [et_pb_line_break_holder] -->          popTableData(i, v, data);<!-- [et_pb_line_break_holder] -->          i++;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function updateOrder(tableId, entryId, entry) {<!-- [et_pb_line_break_holder] -->  delete entry[\"_labels\"];<!-- [et_pb_line_break_holder] -->  var header = [];<!-- [et_pb_line_break_holder] -->  var rows = [];<!-- [et_pb_line_break_holder] -->  jQuery(`#${tableId} tr th`).each(function (i, th) {<!-- [et_pb_line_break_holder] -->    header.push(jQuery(th).text());<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  jQuery(`#${tableId} tr:has(td)`).each(function (i, tr) {<!-- [et_pb_line_break_holder] -->    var row = {};<!-- [et_pb_line_break_holder] -->    jQuery(tr)<!-- [et_pb_line_break_holder] -->      .find(\"td\")<!-- [et_pb_line_break_holder] -->      .each(function (j, td) {<!-- [et_pb_line_break_holder] -->        row[header[j]] = jQuery(td).text();<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    rows.push(row);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  entry[26] = rows;<!-- [et_pb_line_break_holder] -->  let reqData = {};<!-- [et_pb_line_break_holder] -->  reqData.entryId = entryId;<!-- [et_pb_line_break_holder] -->  reqData.presentationOrder = entry;<!-- [et_pb_line_break_holder] -->  reqData.method = \"POST\";<!-- [et_pb_line_break_holder] -->  getData(reqData, function (response) {<!-- [et_pb_line_break_holder] -->    \/\/console.log(response);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function orderEntries(entries, allEntries) {<!-- [et_pb_line_break_holder] -->  \/\/ Clone arrays to avoid modifying originals<!-- [et_pb_line_break_holder] -->  const entryList = [...entries];<!-- [et_pb_line_break_holder] -->  const allEntryList = [...allEntries];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 1: Create lookup maps<!-- [et_pb_line_break_holder] -->  const entryMap = new Map();<!-- [et_pb_line_break_holder] -->  entryList.forEach((entry) => {<!-- [et_pb_line_break_holder] -->    entryMap.set(entry[\"Entry Id\"], entry);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 2: Sort entries by order<!-- [et_pb_line_break_holder] -->  const sortedEntries = entryList.sort((a, b) => {<!-- [et_pb_line_break_holder] -->    return parseInt(a.Order, 10) - parseInt(b.Order, 10);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 3: Find highest order number<!-- [et_pb_line_break_holder] -->  const highestOrder =<!-- [et_pb_line_break_holder] -->    sortedEntries.length > 0<!-- [et_pb_line_break_holder] -->      ? Math.max(...sortedEntries.map((entry) => parseInt(entry.Order, 10)))<!-- [et_pb_line_break_holder] -->      : 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 4: Find truly unassigned entries (in allEntries but not yet ordered)<!-- [et_pb_line_break_holder] -->  const unassignedEntries = allEntryList.filter((entry) => {<!-- [et_pb_line_break_holder] -->    const entryId = entry.id;<!-- [et_pb_line_break_holder] -->    return !entryMap.has(entryId);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 5: Add unassigned entries with new order numbers<!-- [et_pb_line_break_holder] -->  let nextOrder = highestOrder + 1;<!-- [et_pb_line_break_holder] -->  \/\/ ...entry,<!-- [et_pb_line_break_holder] -->  const newEntries = unassignedEntries.map((entry) => ({<!-- [et_pb_line_break_holder] -->    Order: (nextOrder++).toString(),<!-- [et_pb_line_break_holder] -->    \"Entry Id\": entry.id,<!-- [et_pb_line_break_holder] -->    Presentation: entry[7],<!-- [et_pb_line_break_holder] -->  }));<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 6: Combine sorted original entries with new ones<!-- [et_pb_line_break_holder] -->  return [...sortedEntries, ...newEntries];<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function orderPresentations(v) {<!-- [et_pb_line_break_holder] -->  \/\/keep this to be able to compare table to array<!-- [et_pb_line_break_holder] -->  const entriesArray = Object.entries(v.presentations).map(([id, data]) => {<!-- [et_pb_line_break_holder] -->    return { ...data, id }; \/\/ Add the ID to each entry object<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  let entryOrder = orderEntries(v[26], entriesArray);<!-- [et_pb_line_break_holder] -->  let newPresObj = [];<!-- [et_pb_line_break_holder] -->  jQuery.each(entryOrder, function (key, val) {<!-- [et_pb_line_break_holder] -->    if (v?.presentations?.[val[\"Entry Id\"]]) {<!-- [et_pb_line_break_holder] -->      v.presentations[val[\"Entry Id\"]][\"Display Order\"] = key + 1;<!-- [et_pb_line_break_holder] -->      newPresObj.push(v.presentations[val[\"Entry Id\"]]);<!-- [et_pb_line_break_holder] -->      \/\/newPresObj[val[\"Entry Id\"]][\"Display Order\"] = key + 1;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  return newPresObj;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code disabled_on=&#8221;off|off|off&#8221; admin_label=&#8221;JS functions&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; disabled=&#8221;on&#8221; global_module=&#8221;24952&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->\/* THIS IS A GLOBAL BLOCK *\/<!-- [et_pb_line_break_holder] -->\/*<!-- [et_pb_line_break_holder] -->*Functions in this file:<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*on change for .aesRadio, .aesCheckBox<!-- [et_pb_line_break_holder] -->This function runs the admin page and pulls the correct data based on what is changed. It also calls most of the other functions on this page<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*tableIt <!-- [et_pb_line_break_holder] -->Creates the table for all of the views except formatted sessions<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->*\"click\", \".delete_request<!-- [et_pb_line_break_holder] -->This does nothing and will not work. I am keeping it as a placeholder to add this functionality later<!-- [et_pb_line_break_holder] -->*getRooms - get the list of rooms on the session form<!-- [et_pb_line_break_holder] -->*getTimePicker - creates a time picker field for assigning times to sessions<!-- [et_pb_line_break_holder] -->*initTimePicker - initialize  time picker<!-- [et_pb_line_break_holder] -->*updateFullTimeValue- reuse to update entry<!-- [et_pb_line_break_holder] -->\/\/initialize  time picker and subfunctions for setting time<!-- [et_pb_line_break_holder] -->*\/<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->jQuery(document).on(\"click\", \".sessionToggle\", function () {<!-- [et_pb_line_break_holder] -->  let viewType = \"formattedSessions\";<!-- [et_pb_line_break_holder] -->  let tableId = \"aesTable\";<!-- [et_pb_line_break_holder] -->  let archived;<!-- [et_pb_line_break_holder] -->  let abstracts;<!-- [et_pb_line_break_holder] -->  if (jQuery.fn.DataTable.isDataTable(`#${tableId}`)) {<!-- [et_pb_line_break_holder] -->    jQuery(`#${tableId}`).DataTable().destroy();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  jQuery(\"#aesContent\").html(<!-- [et_pb_line_break_holder] -->    `<\/p>\n<table style=\"width:100%; border:none;\" id=\"${tableId}\" class=\"table table-striped\">\n<thead><\/thead>\n<tbody><\/tbody>\n<\/table>\n<p>`,<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->  if (jQuery(this).text() != \"View by session\") {<!-- [et_pb_line_break_holder] -->    console.log(\"by presentation\");<!-- [et_pb_line_break_holder] -->    viewType = \"setSchedule\";<!-- [et_pb_line_break_holder] -->    setSchedule();<!-- [et_pb_line_break_holder] -->    \/\/createTables(jQuery(\"#aesTable\"),'setSchedule');<!-- [et_pb_line_break_holder] -->    jQuery(this).find(\"a\").text(\"View by session\");<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    console.log(\"by session\");<!-- [et_pb_line_break_holder] -->    formattedSessions(archived, abstracts);<!-- [et_pb_line_break_holder] -->    jQuery(this).find(\"a\").text(\"View by presentation\");<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  tableIt(viewType);<!-- [et_pb_line_break_holder] -->  console.log(viewType);<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/major function called by changing options on admin page<!-- [et_pb_line_break_holder] -->jQuery(document).on(\"change\", \".aesRadio, .aesCheckBox\", function () {<!-- [et_pb_line_break_holder] -->  let abstracts;<!-- [et_pb_line_break_holder] -->  let tableId = \"aesTable\";<!-- [et_pb_line_break_holder] -->  jQuery(\"#aesContent\").html(<!-- [et_pb_line_break_holder] -->    `<\/p>\n<table style=\"width:100%; border:none;\" id=\"${tableId}\" class=\"table table-striped\">\n<thead><\/thead>\n<tbody><\/tbody>\n<\/table>\n<p>`,<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->  let archived = jQuery('[name=\"archived\"]:checked').val();<!-- [et_pb_line_break_holder] -->  \/\/aesData = retrieveSessionTest(sessionResult, presentationResult, archived);<!-- [et_pb_line_break_holder] -->  let viewType = jQuery('[name=\"view_type\"]:checked').val();<!-- [et_pb_line_break_holder] -->  if (viewType == \"formattedSessions\") {<!-- [et_pb_line_break_holder] -->    formattedSessions(archived, abstracts);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"sessions\") {<!-- [et_pb_line_break_holder] -->    viewSessions(archived);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"session_chairs\") {<!-- [et_pb_line_break_holder] -->    viewSessionChairs(archived);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"presentations\") {<!-- [et_pb_line_break_holder] -->    viewPresentations(archived, false);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"presenters\") {<!-- [et_pb_line_break_holder] -->    viewPresenters(archived);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"mentors\") {<!-- [et_pb_line_break_holder] -->    viewMentors(archived);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"missing_abstracts\") {<!-- [et_pb_line_break_holder] -->    \/\/\/FIX. Currently does nothing<!-- [et_pb_line_break_holder] -->    viewPresentations(archived, true);<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"setSchedule\") {<!-- [et_pb_line_break_holder] -->    setSchedule();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  tableIt(viewType);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery(\"#accordHolder\").accordion({<!-- [et_pb_line_break_holder] -->    heightStyle: \"content\",<!-- [et_pb_line_break_holder] -->    active: 1, \/\/ Index of the tab to be activated<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/this function partially works. I removed the search boxes from the top of each column because it needs to be modified to be dynamic. But this function is where the createTables function that actually makes the tables is called<!-- [et_pb_line_break_holder] -->function tableIt(type) {<!-- [et_pb_line_break_holder] -->  \/\/ Setup - add a text input to each footer cell<!-- [et_pb_line_break_holder] -->  if (type != \"setSchedule\" && type != \"formattedSessions\") {<!-- [et_pb_line_break_holder] -->    jQuery(\"table thead tr\").clone(true).appendTo(\"table thead\");<!-- [et_pb_line_break_holder] -->    jQuery(\"table thead tr:eq(1) th\").each(function (i) {<!-- [et_pb_line_break_holder] -->      var title = jQuery(this).text();<!-- [et_pb_line_break_holder] -->      if (title && title != \"Actions\" && title != null) {<!-- [et_pb_line_break_holder] -->        var search_title = title.replace(\"\/\", \"\");<!-- [et_pb_line_break_holder] -->        search_title = search_title.replace(\/s\/g, \"\");<!-- [et_pb_line_break_holder] -->        jQuery(this).html(<!-- [et_pb_line_break_holder] -->          `<input type=\"text\" placeholder=\"Search ${title}\" id=\"search_${search_title}\" class=\"searchHeader\"\/>`,<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->      } else {<!-- [et_pb_line_break_holder] -->        jQuery(this).html(\"\");<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/maybe not all of them?<!-- [et_pb_line_break_holder] -->  \/\/createTables(jQuery(`#${tableId}`),type);<!-- [et_pb_line_break_holder] -->  \/\/yes, all of them<!-- [et_pb_line_break_holder] -->  jQuery(\"#splashPage\")<!-- [et_pb_line_break_holder] -->    .find(\"table\")<!-- [et_pb_line_break_holder] -->    .each(function (k, v) {<!-- [et_pb_line_break_holder] -->      console.log(jQuery(v).find(\"th\").length);<!-- [et_pb_line_break_holder] -->      if (<!-- [et_pb_line_break_holder] -->        jQuery(v).find(\"th\").length > 0 &&<!-- [et_pb_line_break_holder] -->        jQuery(v).find(\"tbody\").length > 0<!-- [et_pb_line_break_holder] -->      ) {<!-- [et_pb_line_break_holder] -->        createTables(v, type);<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/this function is here soley as a placeholder for future enhancement<!-- [et_pb_line_break_holder] -->jQuery(document).on(\"click\", \".delete_request\", function (event) {<!-- [et_pb_line_break_holder] -->  event.preventDefault();<!-- [et_pb_line_break_holder] -->  var r = confirm(<!-- [et_pb_line_break_holder] -->    \"Are you sure you want to delete this?\\nDeletions cannot be undone.\",<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->  if (r == true) {<!-- [et_pb_line_break_holder] -->    var pkey = $(this).attr(\"id\");<!-- [et_pb_line_break_holder] -->    let table = $(this).hasClass(\"presentation\")<!-- [et_pb_line_break_holder] -->      ? \"AES_PRESENTATIONS\"<!-- [et_pb_line_break_holder] -->      : \"AES_SESSIONS\";<!-- [et_pb_line_break_holder] -->    pkey = pkey.replace(\"delete_\", \"\");<!-- [et_pb_line_break_holder] -->    jQuery(this).html(<!-- [et_pb_line_break_holder] -->      '<img decoding=\"async\" src=\"\/include_files\/iframe_apps\/library\/resolver\/ajax-loader.gif\" border=\"0\">',<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->    jQuery<!-- [et_pb_line_break_holder] -->      .getJSON(<!-- [et_pb_line_break_holder] -->        `db\/delete.php?async=yes&pkey=${pkey}&table=${table}`,<!-- [et_pb_line_break_holder] -->        function (result) {<!-- [et_pb_line_break_holder] -->          jQuery.each(result, function (property, value) {<!-- [et_pb_line_break_holder] -->            jQuery(\"#buttons_\" + pkey).html(\"Deleted\");<!-- [et_pb_line_break_holder] -->            jQuery(`#${pkey}`).remove();<!-- [et_pb_line_break_holder] -->          });<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->      )<!-- [et_pb_line_break_holder] -->      .error(function () {<!-- [et_pb_line_break_holder] -->        alert(\"There was a problem with this deletion.\");<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/.complete(function() { alert(\"complete\"); })<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/This function creates the room dropdown for the session list<!-- [et_pb_line_break_holder] -->function getRooms(rooms, currentVal) {<!-- [et_pb_line_break_holder] -->  let formRoomSet = '<\/p>\n<div class=\"room-container\"><select class=\"rooms\">';<!-- [et_pb_line_break_holder] -->  if (<!-- [et_pb_line_break_holder] -->    currentVal &&<!-- [et_pb_line_break_holder] -->    currentVal != \"\" &&<!-- [et_pb_line_break_holder] -->    typeof rooms[currentVal] == \"undefined\"<!-- [et_pb_line_break_holder] -->  ) {<!-- [et_pb_line_break_holder] -->    rooms[currentVal] = currentVal;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  jQuery.each(rooms, function (k, v) {<!-- [et_pb_line_break_holder] -->    formRoomSet += `<option val=\"${k}\"`;<!-- [et_pb_line_break_holder] -->    if (currentVal && currentVal == k) {<!-- [et_pb_line_break_holder] -->      formRoomSet += \" selected\";<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    formRoomSet += `>${v}<\/option>`;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  formRoomSet += \"<\/select><\/div>\n<p>\";<!-- [et_pb_line_break_holder] -->  return formRoomSet;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/WOrk to do - type of session<!-- [et_pb_line_break_holder] -->function getSessions(sessions, currentVal, archived) {<!-- [et_pb_line_break_holder] -->  console.log(currentVal, typeof currentVal);<!-- [et_pb_line_break_holder] -->  let formSessionSet =<!-- [et_pb_line_break_holder] -->    '<\/p>\n<div class=\"session-container\"><select class=\"setSession\"><option value=\"\">Unassigned<\/option>';<!-- [et_pb_line_break_holder] -->  jQuery.each(sessions, function (key, val) {<!-- [et_pb_line_break_holder] -->    const entryDate = new Date(val.date_created);<!-- [et_pb_line_break_holder] -->    const entryYear = entryDate.getFullYear();<!-- [et_pb_line_break_holder] -->    if (<!-- [et_pb_line_break_holder] -->      val &&<!-- [et_pb_line_break_holder] -->      Object.keys(val).length > 0 &&<!-- [et_pb_line_break_holder] -->      (entryYear == viewYear || viewYear == \"all\" || archived == \"yes\")<!-- [et_pb_line_break_holder] -->    ) {<!-- [et_pb_line_break_holder] -->      let updateType =<!-- [et_pb_line_break_holder] -->        val[7] && val[7].match(\/poster\/i)<!-- [et_pb_line_break_holder] -->          ? \"posters\"<!-- [et_pb_line_break_holder] -->          : val[9] && val[9].match(\/sponsored\/i)<!-- [et_pb_line_break_holder] -->            ? \"sponsoredSessions\"<!-- [et_pb_line_break_holder] -->            : \"openSessions\";<!-- [et_pb_line_break_holder] -->      formSessionSet += `<option value=\"${updateType}\"${currentVal == val[1] ? \" selected\" : \"\"}>${val[1]}<\/option>`;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  formSessionSet += \"<\/select><\/div>\n<p>\";<!-- [et_pb_line_break_holder] -->  return formSessionSet;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/this function creates the time dropdowns for the session list<!-- [et_pb_line_break_holder] -->function getTimePicker(type, currentVal) {<!-- [et_pb_line_break_holder] -->  var currentArr = currentVal ? currentVal.split(\":\") : [];<!-- [et_pb_line_break_holder] -->  let formFieldSet = `<\/p>\n<div class=\"time-picker-container\"><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"time-picker ${type}\"><!-- [et_pb_line_break_holder] -->    <select class=\"hours time-input\">`;<!-- [et_pb_line_break_holder] -->  if (currentArr[0]) {<!-- [et_pb_line_break_holder] -->    formFieldSet += `<option val=\"${currentArr[0]}\" selected>${currentArr[0]}<\/option>`;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  formFieldSet += `<\/select><span>:<\/span><select class=\"minutes time-input\">`;<!-- [et_pb_line_break_holder] -->  if (currentArr[1]) {<!-- [et_pb_line_break_holder] -->    formFieldSet += `<option val=\"${currentArr[1].replace(\/[AP]M\/i, \"\").trim()}\" selected>${currentArr[1].replace(\/[AP]M\/i, \"\").trim()}<\/option>`;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  formFieldSet += `<\/select><select class=\"ampm time-input\">`;<!-- [et_pb_line_break_holder] -->  let ampmVal = currentArr[1]<!-- [et_pb_line_break_holder] -->    ? currentArr[1].replace(\/[0-9]\/g, \"\").trim().toUpperCase()<!-- [et_pb_line_break_holder] -->    : \"\";<!-- [et_pb_line_break_holder] -->  jQuery.each([\"AM\", \"PM\"], function (k, v) {<!-- [et_pb_line_break_holder] -->    formFieldSet += `<option value=\"${v}\"${ampmVal == v ? \" selected\" : \"\"}>${v}<\/option>`;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  formFieldSet += `<\/select><\/div>\n<p><input type=\"hidden\" class=\"full-time-value\" name=\"${type}\"><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->  return formFieldSet;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Initialize all time pickers on the page<!-- [et_pb_line_break_holder] -->function setTimePickers() {<!-- [et_pb_line_break_holder] -->  jQuery(\".time-picker-container\").each(function (index) {<!-- [et_pb_line_break_holder] -->    initTimePicker(jQuery(this), index);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Update archived\/room value when checkboxchanges<!-- [et_pb_line_break_holder] -->jQuery(document).on(<!-- [et_pb_line_break_holder] -->  \"change\",<!-- [et_pb_line_break_holder] -->  \".archiveThis, .rooms, .markDuplicate, .setSession\",<!-- [et_pb_line_break_holder] -->  function () {<!-- [et_pb_line_break_holder] -->    console.log(\"change\");<!-- [et_pb_line_break_holder] -->    let thisEntryId = jQuery(this)<!-- [et_pb_line_break_holder] -->      .parents(\"tr\")<!-- [et_pb_line_break_holder] -->      .attr(\"id\")<!-- [et_pb_line_break_holder] -->      .replace(\/rowId\/i, \"\");<!-- [et_pb_line_break_holder] -->    let type = jQuery(this).hasClass(\"archiveThis\")<!-- [et_pb_line_break_holder] -->      ? \"archive\"<!-- [et_pb_line_break_holder] -->      : jQuery(this).hasClass(\"rooms\")<!-- [et_pb_line_break_holder] -->        ? \"room\"<!-- [et_pb_line_break_holder] -->        : jQuery(this).hasClass(\"setSession\")<!-- [et_pb_line_break_holder] -->          ? jQuery(this).find(\":selected\").val()<!-- [et_pb_line_break_holder] -->          : \"markDuplicate\";<!-- [et_pb_line_break_holder] -->    let updateValue =<!-- [et_pb_line_break_holder] -->      type == \"room\"<!-- [et_pb_line_break_holder] -->        ? jQuery(this).find(\":selected\").val()<!-- [et_pb_line_break_holder] -->        : jQuery(this).hasClass(\"setSession\")<!-- [et_pb_line_break_holder] -->          ? jQuery(this).find(\":selected\").text()<!-- [et_pb_line_break_holder] -->          : jQuery(this).find(\":checked\").val();<!-- [et_pb_line_break_holder] -->    let loadPlace = jQuery(this);<!-- [et_pb_line_break_holder] -->    updateItem(type, updateValue, thisEntryId, loadPlace);<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] -->);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/This sends the updated information from the admin page and syncs state<!-- [et_pb_line_break_holder] -->function updateItem(type, updateValue, thisEntryId, loadPlace) {<!-- [et_pb_line_break_holder] -->  getData(<!-- [et_pb_line_break_holder] -->    { entryId: thisEntryId, updateType: type, updateValue: updateValue },<!-- [et_pb_line_break_holder] -->    function (response) {<!-- [et_pb_line_break_holder] -->      if (<!-- [et_pb_line_break_holder] -->        !response ||<!-- [et_pb_line_break_holder] -->        !response.success ||<!-- [et_pb_line_break_holder] -->        !response.data ||<!-- [et_pb_line_break_holder] -->        !response.data.success<!-- [et_pb_line_break_holder] -->      ) {<!-- [et_pb_line_break_holder] -->        console.error(\"[AES] updateItem failed:\", response);<!-- [et_pb_line_break_holder] -->        return;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      \/\/ Keep aesData in sync so re-renders immediately reflect the change<!-- [et_pb_line_break_holder] -->      var aesFieldMap = {<!-- [et_pb_line_break_holder] -->        archive: { presentations: \"38.1\", sessions: \"21.1\" },<!-- [et_pb_line_break_holder] -->        markDuplicate: { presentations: \"39.1\", sessions: \"34.1\" },<!-- [et_pb_line_break_holder] -->        room: { sessions: \"27\" },<!-- [et_pb_line_break_holder] -->        start_time: { sessions: \"31\" },<!-- [et_pb_line_break_holder] -->        end_time: { sessions: \"32\" },<!-- [et_pb_line_break_holder] -->        openSessions: { presentations: \"12\" },<!-- [et_pb_line_break_holder] -->        sponsoredSessions: { presentations: \"10\" },<!-- [et_pb_line_break_holder] -->        posters: { presentations: \"13\" },<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      if (type == \"openSessions\" || type == \"posters\") {<!-- [et_pb_line_break_holder] -->        updateValue = [updateValue];<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      var mapping = aesFieldMap[type] || {};<!-- [et_pb_line_break_holder] -->      if (<!-- [et_pb_line_break_holder] -->        mapping.presentations &&<!-- [et_pb_line_break_holder] -->        aesData.presentations &&<!-- [et_pb_line_break_holder] -->        aesData.presentations[thisEntryId]<!-- [et_pb_line_break_holder] -->      ) {<!-- [et_pb_line_break_holder] -->        aesData.presentations[thisEntryId][mapping.presentations] = updateValue;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      if (mapping.sessions) {<!-- [et_pb_line_break_holder] -->        jQuery.each(aesData.sessions || {}, function (k, v) {<!-- [et_pb_line_break_holder] -->          if (<!-- [et_pb_line_break_holder] -->            v &&<!-- [et_pb_line_break_holder] -->            (String(v.pkey) === String(thisEntryId) ||<!-- [et_pb_line_break_holder] -->              String(v.id) === String(thisEntryId))<!-- [et_pb_line_break_holder] -->          ) {<!-- [et_pb_line_break_holder] -->            v[mapping.sessions] = updateValue;<!-- [et_pb_line_break_holder] -->            return false; \/\/ break<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function getFieldToUpdate(type, form) {<!-- [et_pb_line_break_holder] -->  var fields = {<!-- [et_pb_line_break_holder] -->    1: {<!-- [et_pb_line_break_holder] -->      archive: 38,<!-- [et_pb_line_break_holder] -->      markDuplicate: 39.1,<!-- [et_pb_line_break_holder] -->      openSessions: 12,<!-- [et_pb_line_break_holder] -->      sponsoredSessions: 10,<!-- [et_pb_line_break_holder] -->      posters: 13,<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    2: {<!-- [et_pb_line_break_holder] -->      archive: 21,<!-- [et_pb_line_break_holder] -->      markDuplicate: 34.1,<!-- [et_pb_line_break_holder] -->      room: 27,<!-- [et_pb_line_break_holder] -->      start_time: 31,<!-- [et_pb_line_break_holder] -->      end_time: 32,<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  };<!-- [et_pb_line_break_holder] -->  return fields[form][type] || \"\";<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Update hidden value when any time component changes - it really updates the data we are sending to Gravity Forms<!-- [et_pb_line_break_holder] -->jQuery(document).on(\"change\", \".time-input\", function () {<!-- [et_pb_line_break_holder] -->  let valTypes = [\"hours\", \"minutes\", \"ampm\", \"full-time-value\"];<!-- [et_pb_line_break_holder] -->  var $hours = jQuery(this).parent().find(\".hours\");<!-- [et_pb_line_break_holder] -->  var $minutes = jQuery(this).parent().find(\".minutes\");<!-- [et_pb_line_break_holder] -->  var $ampm = jQuery(this).parent().find(\".ampm\");<!-- [et_pb_line_break_holder] -->  var $fullTimeValue = jQuery(this).parent().find(\".full-time-value\");<!-- [et_pb_line_break_holder] -->  var type = jQuery(this)<!-- [et_pb_line_break_holder] -->    .parent()<!-- [et_pb_line_break_holder] -->    .attr(\"class\")<!-- [et_pb_line_break_holder] -->    .replace(\"time-picker-container\", \"\")<!-- [et_pb_line_break_holder] -->    .trim();<!-- [et_pb_line_break_holder] -->  updateFullTimeValue(<!-- [et_pb_line_break_holder] -->    jQuery(this).parent(),<!-- [et_pb_line_break_holder] -->    $hours,<!-- [et_pb_line_break_holder] -->    $minutes,<!-- [et_pb_line_break_holder] -->    $ampm,<!-- [et_pb_line_break_holder] -->    $fullTimeValue,<!-- [et_pb_line_break_holder] -->    type,<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Function to initialize a single time picker<!-- [et_pb_line_break_holder] -->function initTimePicker($container, index) {<!-- [et_pb_line_break_holder] -->  var $hours = $container.find(\".hours\");<!-- [et_pb_line_break_holder] -->  var $minutes = $container.find(\".minutes\");<!-- [et_pb_line_break_holder] -->  var $ampm = $container.find(\".ampm\");<!-- [et_pb_line_break_holder] -->  var $fullTimeValue = $container.find(\".full-time-value\");<!-- [et_pb_line_break_holder] -->  \/\/ Populate hours dropdown (1-12)<!-- [et_pb_line_break_holder] -->  for (var i = 0; i <= 12; i++) {<!-- [et_pb_line_break_holder] -->    $hours.append(<!-- [et_pb_line_break_holder] -->      jQuery(\"<option>\", {<!-- [et_pb_line_break_holder] -->        value: i,<!-- [et_pb_line_break_holder] -->        text: i < 10 ? \"0\" + i : i,<!-- [et_pb_line_break_holder] -->      }),<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Populate minutes dropdown (00-59)<!-- [et_pb_line_break_holder] -->  for (var i = 0; i < 60; i++) {<!-- [et_pb_line_break_holder] -->    $minutes.append(<!-- [et_pb_line_break_holder] -->      jQuery(\"<option>\", {<!-- [et_pb_line_break_holder] -->        value: i,<!-- [et_pb_line_break_holder] -->        text: i < 10 ? \"0\" + i : i,<!-- [et_pb_line_break_holder] -->      }),<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Add methods to the container element<!-- [et_pb_line_break_holder] -->  $container.data(\"timePicker\", {<!-- [et_pb_line_break_holder] -->    getTime: function () {<!-- [et_pb_line_break_holder] -->      return {<!-- [et_pb_line_break_holder] -->        hour: parseInt($hours.val()),<!-- [et_pb_line_break_holder] -->        minute: parseInt($minutes.val()),<!-- [et_pb_line_break_holder] -->        ampm: $ampm.val(),<!-- [et_pb_line_break_holder] -->        formatted: $fullTimeValue.val(),<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    setTime: function (hour, minute, ampm) {<!-- [et_pb_line_break_holder] -->      $hours.val(hour);<!-- [et_pb_line_break_holder] -->      $minutes.val(minute);<!-- [et_pb_line_break_holder] -->      $ampm.val(ampm.toUpperCase());<!-- [et_pb_line_break_holder] -->      updateFullTimeValue();<!-- [et_pb_line_break_holder] -->      return this;<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    setCurrentTime: function () {<!-- [et_pb_line_break_holder] -->      var now = new Date();<!-- [et_pb_line_break_holder] -->      var hours = now.getHours();<!-- [et_pb_line_break_holder] -->      var minutes = now.getMinutes();<!-- [et_pb_line_break_holder] -->      var ampm = hours >= 12 ? \"PM\" : \"AM\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Convert to 12-hour format<!-- [et_pb_line_break_holder] -->      hours = hours % 12;<!-- [et_pb_line_break_holder] -->      hours = hours ? hours : 12; \/\/ the hour '0' should be '12'<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      this.setTime(hours, minutes, ampm);<!-- [et_pb_line_break_holder] -->      return this;<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Function to update the hidden input with the full time value and send it to Gravity Forms<!-- [et_pb_line_break_holder] -->function updateFullTimeValue(<!-- [et_pb_line_break_holder] -->  $container,<!-- [et_pb_line_break_holder] -->  $hours,<!-- [et_pb_line_break_holder] -->  $minutes,<!-- [et_pb_line_break_holder] -->  $ampm,<!-- [et_pb_line_break_holder] -->  $fullTimeValue,<!-- [et_pb_line_break_holder] -->  type,<!-- [et_pb_line_break_holder] -->) {<!-- [et_pb_line_break_holder] -->  var hours = parseInt($hours.val());<!-- [et_pb_line_break_holder] -->  var minutes = parseInt($minutes.val());<!-- [et_pb_line_break_holder] -->  var ampm = $ampm.val().toLowerCase();<!-- [et_pb_line_break_holder] -->  var formattedTime =<!-- [et_pb_line_break_holder] -->    (hours < 10 ? \"0\" + hours : hours) +<!-- [et_pb_line_break_holder] -->    \":\" +<!-- [et_pb_line_break_holder] -->    (minutes < 10 ? \"0\" + minutes : minutes) +<!-- [et_pb_line_break_holder] -->    \" \" +<!-- [et_pb_line_break_holder] -->    ampm;<!-- [et_pb_line_break_holder] -->  $fullTimeValue.val(formattedTime);<!-- [et_pb_line_break_holder] -->  let thisEntryId = $container.parents(\"tr\").attr(\"id\").replace(\/rowId\/i, \"\");<!-- [et_pb_line_break_holder] -->  let thisType = $container.hasClass(\"start_time\") ? \"start_time\" : \"end_time\";<!-- [et_pb_line_break_holder] -->  let loadPlace = $container;<!-- [et_pb_line_break_holder] -->  updateItem(thisType, formattedTime, thisEntryId, loadPlace);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code disabled_on=&#8221;off|off|off&#8221; admin_label=&#8221;Get Gravity Forms Data&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px|0px|0px|0px|false|false&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_module=&#8221;26460&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->\/* THIS IS A GLOBAL BLOCK *\/<!-- [et_pb_line_break_holder] -->\/*if (pageParams.get(\"entryId\") && !pageParams.get(\"gf_entry_id\") ){<!-- [et_pb_line_break_holder] -->    window.location.href = `\/pure\/forms\/submission-view?gf_entry_id=${entryId}`;<!-- [et_pb_line_break_holder] -->  }*\/<!-- [et_pb_line_break_holder] -->\/\/ \u2500\u2500\u2500 getData \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<!-- [et_pb_line_break_holder] -->\/\/ Maps reqData properties to the correct AJAX requestType and fires the call.<!-- [et_pb_line_break_holder] -->\/\/ Uses gfaeData (injected by gfae_personal_dashboard) with fallback to gfedData.<!-- [et_pb_line_break_holder] -->const AES_Utils = {<!-- [et_pb_line_break_holder] -->  cleanEmail: (email) =><!-- [et_pb_line_break_holder] -->    (email || \"\")<!-- [et_pb_line_break_holder] -->      .replace(\/@(mail.)?wou.edu\/i, \"\")<!-- [et_pb_line_break_holder] -->      .toLowerCase()<!-- [et_pb_line_break_holder] -->      .trim(),<!-- [et_pb_line_break_holder] -->  getYear: (dateStr) =><!-- [et_pb_line_break_holder] -->    dateStr ? new Date(dateStr).getFullYear() : new Date().getFullYear(),<!-- [et_pb_line_break_holder] -->  findField: (fields, id) =><!-- [et_pb_line_break_holder] -->    Object.values(fields).find((f) => f && f.id === id),<!-- [et_pb_line_break_holder] -->};<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function getData(reqData, callback) {<!-- [et_pb_line_break_holder] -->  var cfg =<!-- [et_pb_line_break_holder] -->    typeof gfaeData !== \"undefined\"<!-- [et_pb_line_break_holder] -->      ? gfaeData<!-- [et_pb_line_break_holder] -->      : typeof gfedData !== \"undefined\"<!-- [et_pb_line_break_holder] -->        ? gfedData<!-- [et_pb_line_break_holder] -->        : null;<!-- [et_pb_line_break_holder] -->  if (!cfg) {<!-- [et_pb_line_break_holder] -->    console.error(\"[AES] No AJAX config available\");<!-- [et_pb_line_break_holder] -->    return;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var requestType;<!-- [et_pb_line_break_holder] -->  if (reqData.abstractApproved !== undefined) {<!-- [et_pb_line_break_holder] -->    requestType = \"approveAbstract\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.presentationOrder !== undefined) {<!-- [et_pb_line_break_holder] -->    requestType = \"updatePresentationOrder\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.getEntries) {<!-- [et_pb_line_break_holder] -->    requestType = \"getAllEntries\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.searchType) {<!-- [et_pb_line_break_holder] -->    requestType = \"searchEntries\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.updateType !== undefined) {<!-- [et_pb_line_break_holder] -->    requestType = \"updateAdminField\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.renderEntry) {<!-- [et_pb_line_break_holder] -->    requestType = \"getEntryHtml\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.entryId) {<!-- [et_pb_line_break_holder] -->    requestType = \"getFullEntry\";<!-- [et_pb_line_break_holder] -->  } else if (reqData.getFormFields) {<!-- [et_pb_line_break_holder] -->    requestType = \"getFormFields\";<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    requestType = \"unknown\";<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery<!-- [et_pb_line_break_holder] -->    .ajax({<!-- [et_pb_line_break_holder] -->      url: cfg.ajaxUrl,<!-- [et_pb_line_break_holder] -->      type: \"POST\",<!-- [et_pb_line_break_holder] -->      dataType: \"json\",<!-- [et_pb_line_break_holder] -->      data: {<!-- [et_pb_line_break_holder] -->        action: \"gfed_get_aes_data\",<!-- [et_pb_line_break_holder] -->        nonce: cfg.nonce,<!-- [et_pb_line_break_holder] -->        requestType: requestType,<!-- [et_pb_line_break_holder] -->        formId: reqData.formId || \"\",<!-- [et_pb_line_break_holder] -->        searchID: reqData.searchID || \"\",<!-- [et_pb_line_break_holder] -->        searchType: reqData.searchType || \"\",<!-- [et_pb_line_break_holder] -->        entryId: reqData.entryId || \"\",<!-- [et_pb_line_break_holder] -->        abstractApproved:<!-- [et_pb_line_break_holder] -->          reqData.abstractApproved !== undefined<!-- [et_pb_line_break_holder] -->            ? reqData.abstractApproved<!-- [et_pb_line_break_holder] -->            : \"\",<!-- [et_pb_line_break_holder] -->        presentationOrder:<!-- [et_pb_line_break_holder] -->          reqData.presentationOrder !== undefined<!-- [et_pb_line_break_holder] -->            ? JSON.stringify(reqData.presentationOrder)<!-- [et_pb_line_break_holder] -->            : \"\",<!-- [et_pb_line_break_holder] -->        fieldKey: reqData.fieldKey || \"\",<!-- [et_pb_line_break_holder] -->        startDate: reqData.startDate || \"\",<!-- [et_pb_line_break_holder] -->        updateType: reqData.updateType || \"\",<!-- [et_pb_line_break_holder] -->        updateValue:<!-- [et_pb_line_break_holder] -->          reqData.updateValue !== undefined ? reqData.updateValue : \"\",<!-- [et_pb_line_break_holder] -->        userEmail:<!-- [et_pb_line_break_holder] -->          typeof currentUser !== \"undefined\" && currentUser?.email<!-- [et_pb_line_break_holder] -->            ? currentUser.email<!-- [et_pb_line_break_holder] -->            : \"\",<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    })<!-- [et_pb_line_break_holder] -->    .done(callback);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ \u2500\u2500\u2500 Personal dashboard \/ entry list \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<!-- [et_pb_line_break_holder] -->\/\/ currentUser is stored at module level so createEntryFromResponse and the<!-- [et_pb_line_break_holder] -->\/\/ click handler can reach it after getPageContent returns.<!-- [et_pb_line_break_holder] -->var currentUser = null;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function getPageContent(user) {<!-- [et_pb_line_break_holder] -->  currentUser = user;<!-- [et_pb_line_break_holder] -->  let searchID = AES_Utils.cleanEmail(currentUser.email);<!-- [et_pb_line_break_holder] -->  searchID += `,${currentUser.vnumber}`;<!-- [et_pb_line_break_holder] -->  if (entryId) {<!-- [et_pb_line_break_holder] -->    displayEntry(entryId);<!-- [et_pb_line_break_holder] -->    return;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Render a labelled <\/p>\n<table> from a search response.<!-- [et_pb_line_break_holder] -->  \/\/ response.columns drives headers; response.entries drives rows.<!-- [et_pb_line_break_holder] -->  \/\/ The first column is always linked, preserving any existing URL params (e.g. viewas).<!-- [et_pb_line_break_holder] -->  function renderTable(title, data) {<!-- [et_pb_line_break_holder] -->    if (!data) return;<!-- [et_pb_line_break_holder] -->    if (!data.columns || data.columns.length === 0) {<!-- [et_pb_line_break_holder] -->      jQuery(\"#entryContent\").append(<!-- [et_pb_line_break_holder] -->        `<\/p>\n<h3>${title}<\/h3>\n<pee style=\"color:#888;\">No columns configured for this table.<\/pee>`,<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->      return;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    let html = `<\/p>\n<h3>${title} <span style=\"font-weight:normal;color:#666;\">(${data.total_count})<\/span><\/h3>\n<p>`;<!-- [et_pb_line_break_holder] -->    if (data.total_count === 0) {<!-- [et_pb_line_break_holder] -->      html += `<pee>No entries found.<\/pee>`;<!-- [et_pb_line_break_holder] -->      jQuery(\"#entryContent\").append(html);<!-- [et_pb_line_break_holder] -->      return;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    \/\/ Append any configured extra columns whose data is actually present in the entries<!-- [et_pb_line_break_holder] -->    const extraCols = (<!-- [et_pb_line_break_holder] -->      (typeof SUBMISSION_TABLE_EXTRA_COLUMNS !== \"undefined\" &&<!-- [et_pb_line_break_holder] -->        SUBMISSION_TABLE_EXTRA_COLUMNS[formId]) ||<!-- [et_pb_line_break_holder] -->      []<!-- [et_pb_line_break_holder] -->    ).filter(function (col) {<!-- [et_pb_line_break_holder] -->      return (<!-- [et_pb_line_break_holder] -->        data.entries.length === 0 || data.entries[0][col.field_id] !== undefined<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    const allCols = data.columns.concat(extraCols);<!-- [et_pb_line_break_holder] -->    html += `<\/p>\n<table class=\"pure-submissions-table widefat\">\n<thead>\n<tr>\n<th>ID<\/th>\n<p>`;<!-- [et_pb_line_break_holder] -->    allCols.forEach(function (col) {<!-- [et_pb_line_break_holder] -->      html += `<\/p>\n<th>${col.label}<\/th>\n<p>`;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    html += `<\/tr>\n<\/thead>\n<tbody>`;<!-- [et_pb_line_break_holder] -->    data.entries.forEach(function (entry) {<!-- [et_pb_line_break_holder] -->      html += `<\/p>\n<tr>\n<td>${entry.id}<\/td>\n<p>`;<!-- [et_pb_line_break_holder] -->      allCols.forEach(function (col, i) {<!-- [et_pb_line_break_holder] -->        let val = entry[col.field_id] !== undefined ? entry[col.field_id] : \"\";<!-- [et_pb_line_break_holder] -->        \/\/ Arrays (e.g. people fields) are not useful in a table cell \u2014 skip them.<!-- [et_pb_line_break_holder] -->        if (Array.isArray(val) || (typeof val === \"object\" && val !== null)) {<!-- [et_pb_line_break_holder] -->          val = \"\";<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        val = String(val);<!-- [et_pb_line_break_holder] -->        if (i === 0) {<!-- [et_pb_line_break_holder] -->          val = `<a href=\"#\" class=\"aes-entry-link\" data-entry-id=\"${entry.id}\">${val}<\/a>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        html += `<\/p>\n<td>${val}<\/td>\n<p>`;<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      html += `<\/tr>\n<p>`;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    html += `<\/tbody>\n<\/table>\n<p>`;<!-- [et_pb_line_break_holder] -->    jQuery(\"#entryContent\").append(html);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (viewType == \"faculty\") {<!-- [et_pb_line_break_holder] -->    \/\/jQuery(\"#studentForm\").hide().css(\"display\", \"none\").remove();<!-- [et_pb_line_break_holder] -->    \/\/jQuery(\"#facultyForm\").hide();\/\/.css(\"display\", \"none\").remove();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Table 1 \u2014 sessions this faculty member chairs or submitted<!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        formId: formId,<!-- [et_pb_line_break_holder] -->        searchID: searchID,<!-- [et_pb_line_break_holder] -->        searchType: \"chairSessions\",<!-- [et_pb_line_break_holder] -->        startDate: `${viewYear}-01-01`,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      function (response) {<!-- [et_pb_line_break_holder] -->        renderTable(\"Your Sessions\", response.data);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Table 2 \u2014 presentations this faculty member is mentoring<!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        formId: formId,<!-- [et_pb_line_break_holder] -->        searchID: searchID,<!-- [et_pb_line_break_holder] -->        searchType: \"mentoredPresentations\",<!-- [et_pb_line_break_holder] -->        startDate: `${viewYear}-01-01`,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      function (response) {<!-- [et_pb_line_break_holder] -->        renderTable(\"Presentations You're Mentoring\", response.data);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Table 3 \u2014 presentations assigned to this faculty member's sessions<!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        formId: formId,<!-- [et_pb_line_break_holder] -->        searchID: searchID,<!-- [et_pb_line_break_holder] -->        searchType: \"sessionPresentations\",<!-- [et_pb_line_break_holder] -->        startDate: `${viewYear}-01-01`,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      function (response) {<!-- [et_pb_line_break_holder] -->        renderTable(\"Presentations in Your Sessions\", response.data);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  } else if (viewType == \"student\") {<!-- [et_pb_line_break_holder] -->    \/\/jQuery(\"#facultyForm\").hide();\/\/.css(\"display\", \"none\").remove();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ jQuery(\"#presentationForm\").show();<!-- [et_pb_line_break_holder] -->    \/\/ Table 1 \u2014 presentations this student submitted<!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        formId: formId,<!-- [et_pb_line_break_holder] -->        searchID: searchID,<!-- [et_pb_line_break_holder] -->        searchType: \"submittedPresentations\",<!-- [et_pb_line_break_holder] -->        startDate: `${viewYear}-01-01`,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      function (response) {<!-- [et_pb_line_break_holder] -->        renderTable(\"Presentations You Submitted\", response.data);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Table 2 \u2014 presentations this student is listed on as a presenter<!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        formId: formId,<!-- [et_pb_line_break_holder] -->        searchID: searchID,<!-- [et_pb_line_break_holder] -->        searchType: \"listedPresentations\",<!-- [et_pb_line_break_holder] -->        startDate: `${viewYear}-01-01`,<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      function (response) {<!-- [et_pb_line_break_holder] -->        renderTable(\"Presentations You're Listed On\", response.data);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ \u2500\u2500\u2500 Entry detail view \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Build a drag-sortable presentation order table, or a plain display table.<!-- [et_pb_line_break_holder] -->function createTable(data, tableID) {<!-- [et_pb_line_break_holder] -->  if (Array.isArray(data) || typeof data === \"object\") {<!-- [et_pb_line_break_holder] -->    return processTable(data, tableID);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  return \"\";<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function processTable(data, tableID) {<!-- [et_pb_line_break_holder] -->  if (tableID === \"presentationorder\") {<!-- [et_pb_line_break_holder] -->    const result = createDataObject(data);<!-- [et_pb_line_break_holder] -->    const items = result.bodyRows<!-- [et_pb_line_break_holder] -->      .map(function (row) {<!-- [et_pb_line_break_holder] -->        return (<!-- [et_pb_line_break_holder] -->          `<\/p>\n<li class=\"sort-item\" data-entry-id=\"${row[\"Entry Id\"]}\" ` +<!-- [et_pb_line_break_holder] -->          `style=\"display:flex;align-items:center;padding:.5em .75em;margin:.3em 0;` +<!-- [et_pb_line_break_holder] -->          `background:#fff;border:1px solid #ddd;border-radius:3px;cursor:grab;\">` +<!-- [et_pb_line_break_holder] -->          `<span class=\"drag-handle\" style=\"margin-right:.75em;color:#aaa;font-size:1.3em;cursor:grab;\">\u2261<\/span>` +<!-- [et_pb_line_break_holder] -->          `<span class=\"presentation-label\" style=\"flex:1;\">${row[\"Presentation\"]}<\/span>` +<!-- [et_pb_line_break_holder] -->          `<span class=\"entry-id\" style=\"display:none;\">${row[\"Entry Id\"]}<\/span>` +<!-- [et_pb_line_break_holder] -->          `<\/li>\n<p>`<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->      })<!-- [et_pb_line_break_holder] -->      .join(\"\");<!-- [et_pb_line_break_holder] -->    return (<!-- [et_pb_line_break_holder] -->      `<\/p>\n<div style=\"border:1px solid #ccc;background:#f5f5f5;padding:1em;border-radius:4px;\">` +<!-- [et_pb_line_break_holder] -->      `<\/p>\n<h4 style=\"margin-top:0;\">Drag presentations into the order you want them, ` +<!-- [et_pb_line_break_holder] -->      `then click \"Set Order\".<\/h4>\n<p>` +<!-- [et_pb_line_break_holder] -->      `<\/p>\n<div id=\"${tableID}_results\" style=\"margin-bottom:.75em;\">` +<!-- [et_pb_line_break_holder] -->      `<button class=\"setOrder button\">Set this Order<\/button><\/div>\n<p>` +<!-- [et_pb_line_break_holder] -->      `<\/p>\n<ul id=\"${tableID}\" class=\"sortable-order\" style=\"list-style:none;padding:0;margin:0;\">${items}<\/ul>\n<\/div>\n<p>`<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  const result = createDataObject(data);<!-- [et_pb_line_break_holder] -->  return `<\/p>\n<table id=\"${tableID}\">\n<thead>${result.headerRow}<\/thead>\n<tbody>${result.bodyRowsHtml}<\/tbody>\n<\/table>\n<p>`;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function createDataObject(data) {<!-- [et_pb_line_break_holder] -->  let headerRow = \"\";<!-- [et_pb_line_break_holder] -->  let bodyRows = [];<!-- [et_pb_line_break_holder] -->  let combinedRow = {};<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (typeof data === \"object\" && !Array.isArray(data)) {<!-- [et_pb_line_break_holder] -->    \/\/ Format 3 \u2014 object of {label, value} pairs<!-- [et_pb_line_break_holder] -->    Object.keys(data).forEach((key) => {<!-- [et_pb_line_break_holder] -->      const value = data[key];<!-- [et_pb_line_break_holder] -->      if (value?.label && value?.value) {<!-- [et_pb_line_break_holder] -->        combinedRow[value.label] = value.value;<!-- [et_pb_line_break_holder] -->      } else if (typeof value === \"object\") {<!-- [et_pb_line_break_holder] -->        const result = createDataObject(value);<!-- [et_pb_line_break_holder] -->        if (!headerRow) headerRow = result.headerRow;<!-- [et_pb_line_break_holder] -->        bodyRows = bodyRows.concat(result.bodyRows);<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    if (Object.keys(combinedRow).length > 0) {<!-- [et_pb_line_break_holder] -->      bodyRows.push(combinedRow);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  } else if (Array.isArray(data)) {<!-- [et_pb_line_break_holder] -->    data.forEach((item) => {<!-- [et_pb_line_break_holder] -->      if (item.label && item.value) {<!-- [et_pb_line_break_holder] -->        \/\/ Format 1 \u2014 [{label, value}, ...]<!-- [et_pb_line_break_holder] -->        const row = {};<!-- [et_pb_line_break_holder] -->        row[item.label] = item.value;<!-- [et_pb_line_break_holder] -->        bodyRows.push(row);<!-- [et_pb_line_break_holder] -->      } else if (typeof item === \"object\") {<!-- [et_pb_line_break_holder] -->        \/\/ Format 2 \u2014 [{col: val, ...}, ...]<!-- [et_pb_line_break_holder] -->        bodyRows.push(item);<!-- [et_pb_line_break_holder] -->      } else {<!-- [et_pb_line_break_holder] -->        \/\/ Plain string<!-- [et_pb_line_break_holder] -->        bodyRows.push({ Entry: item });<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (bodyRows.length > 0 && !headerRow) {<!-- [et_pb_line_break_holder] -->    headerRow = createRow(bodyRows[0], true);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  const bodyRowsHtml = bodyRows.map((row) => createRow(row, false)).join(\"\");<!-- [et_pb_line_break_holder] -->  return { headerRow, bodyRowsHtml, bodyRows };<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function createRow(data, isHeader) {<!-- [et_pb_line_break_holder] -->  if (isHeader) {<!-- [et_pb_line_break_holder] -->    return `<\/p>\n<tr>\n<th><\/th>\n<p>${Object.keys(data)<!-- [et_pb_line_break_holder] -->      .map((key) => `<\/p>\n<th>${key}<\/th>\n<p>`)<!-- [et_pb_line_break_holder] -->      .join(\"\")}<\/tr>\n<p>`;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  return `<\/p>\n<tr>\n<td><\/td>\n<p>${Object.values(data)<!-- [et_pb_line_break_holder] -->    .map((value) => `<\/p>\n<td>${value}<\/td>\n<p>`)<!-- [et_pb_line_break_holder] -->    .join(\"\")}<\/tr>\n<p>`;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Build \/ refresh the presentation ordering table.<!-- [et_pb_line_break_holder] -->\/\/ Accepts the already-fetched entries array from createEntryFromResponse so<!-- [et_pb_line_break_holder] -->\/\/ we don't need a second AJAX round-trip for the same data.<!-- [et_pb_line_break_holder] -->function getSessionOrder(response, entries) {<!-- [et_pb_line_break_holder] -->  \/\/ Look up saved order by field ID (26) so the label name doesn't matter.<!-- [et_pb_line_break_holder] -->  const orderField = Object.values(response).find(function (f) {<!-- [et_pb_line_break_holder] -->    return f && typeof f === \"object\" && f.id === 26;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  const existingOrder = orderField?.value;<!-- [et_pb_line_break_holder] -->  const hasOrder =<!-- [et_pb_line_break_holder] -->    existingOrder &&<!-- [et_pb_line_break_holder] -->    (Array.isArray(existingOrder)<!-- [et_pb_line_break_holder] -->      ? existingOrder.length > 0<!-- [et_pb_line_break_holder] -->      : Object.keys(existingOrder).length > 0);<!-- [et_pb_line_break_holder] -->  console.log(\"Existing order:\", existingOrder, \"hasOrder =\", hasOrder);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Build ordered presentation set \u2014 use saved order when available.<!-- [et_pb_line_break_holder] -->  let presentationSet;<!-- [et_pb_line_break_holder] -->  if (hasOrder) {<!-- [et_pb_line_break_holder] -->    \/\/ Include `id` so orderEntries' unassigned filter (entry.id) matches the<!-- [et_pb_line_break_holder] -->    \/\/ entryMap keys built from existingOrder's \"Entry Id\" values.<!-- [et_pb_line_break_holder] -->    const entriesArray = entries.map(function (data, index) {<!-- [et_pb_line_break_holder] -->      return {<!-- [et_pb_line_break_holder] -->        Order: index + 1,<!-- [et_pb_line_break_holder] -->        id: data.id,<!-- [et_pb_line_break_holder] -->        \"Entry Id\": data.id,<!-- [et_pb_line_break_holder] -->        Presentation: data[7],<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    presentationSet = orderEntries(existingOrder, entriesArray);<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    presentationSet = entries.map(function (v, k) {<!-- [et_pb_line_break_holder] -->      return { Order: k + 1, \"Entry Id\": v.id, Presentation: v[7] };<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const label = \"Presentation Order\";<!-- [et_pb_line_break_holder] -->  const thisId = 26;<!-- [et_pb_line_break_holder] -->  let valuesString =<!-- [et_pb_line_break_holder] -->    `<\/p>\n<li class=\"gfield\" style=\"list-style:none;\" id=\"field_${thisId}\">` +<!-- [et_pb_line_break_holder] -->    `<strong>\n<h3>${label}:<\/h3>\n<p><\/strong>`;<!-- [et_pb_line_break_holder] -->  valuesString += createTable(presentationSet, \"presentationorder\");<!-- [et_pb_line_break_holder] -->  jQuery(\"#entryContent\").append(`${valuesString}<\/li>\n<p>`);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Initialise jQuery UI Sortable on the order list (jQuery UI ships with WordPress core).<!-- [et_pb_line_break_holder] -->  if (typeof jQuery.fn.sortable !== \"undefined\") {<!-- [et_pb_line_break_holder] -->    jQuery(\"#presentationorder\").sortable({<!-- [et_pb_line_break_holder] -->      handle: \".drag-handle\",<!-- [et_pb_line_break_holder] -->      axis: \"y\",<!-- [et_pb_line_break_holder] -->      cursor: \"grabbing\",<!-- [et_pb_line_break_holder] -->      placeholder: \"sort-placeholder\",<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    jQuery(\"#presentationorder\").disableSelection();<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    console.warn(<!-- [et_pb_line_break_holder] -->      \"[AES] jQuery UI Sortable not available \u2014 drag ordering disabled.\",<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Re-initialise DataTables on other tables (presentationorder is now a <\/p>\n<ul>, not a <\/p>\n<table>).<!-- [et_pb_line_break_holder] -->  jQuery(document)<!-- [et_pb_line_break_holder] -->    .find(\"table\")<!-- [et_pb_line_break_holder] -->    .each(function () {<!-- [et_pb_line_break_holder] -->      createTables(this, response.original.value.id, response.original.value);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function approveAbstract(entryId, abstractApproved) {<!-- [et_pb_line_break_holder] -->  getData(<!-- [et_pb_line_break_holder] -->    { entryId: entryId, abstractApproved: abstractApproved },<!-- [et_pb_line_break_holder] -->    function (response) {<!-- [et_pb_line_break_holder] -->      console.log(\"approveAbstract response:\", response);<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->jQuery(document).on(\"change\", \".approveAbstract\", function () {<!-- [et_pb_line_break_holder] -->  console.log(\"approveAbstract change detected:\", this);<!-- [et_pb_line_break_holder] -->  let entryId = jQuery(this).attr(\"name\").replace(\"abstract\", \"\");<!-- [et_pb_line_break_holder] -->  let abstractApproved = jQuery(this).val();<!-- [et_pb_line_break_holder] -->  approveAbstract(entryId, abstractApproved);<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Save the presentation order when \"Set this Order\" is clicked.<!-- [et_pb_line_break_holder] -->\/\/ Collects Entry Id values from each visible row of #presentationorder in their<!-- [et_pb_line_break_holder] -->\/\/ current (possibly drag-reordered) sequence and posts to updatePresentationOrder.<!-- [et_pb_line_break_holder] -->jQuery(document).on(\"click\", \".setOrder\", function () {<!-- [et_pb_line_break_holder] -->  var order = [];<!-- [et_pb_line_break_holder] -->  var $ul = jQuery(\"#presentationorder\");<!-- [et_pb_line_break_holder] -->  var $items = $ul.find(\"li.sort-item\");<!-- [et_pb_line_break_holder] -->  console.log(<!-- [et_pb_line_break_holder] -->    \"[AES setOrder] #presentationorder exists:\",<!-- [et_pb_line_break_holder] -->    $ul.length,<!-- [et_pb_line_break_holder] -->    \"| li.sort-item count:\",<!-- [et_pb_line_break_holder] -->    $items.length,<!-- [et_pb_line_break_holder] -->    \"| all li in ul:\",<!-- [et_pb_line_break_holder] -->    $ul.find(\"li\").length,<!-- [et_pb_line_break_holder] -->    \"| entryId:\",<!-- [et_pb_line_break_holder] -->    entryId,<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] -->  $items.each(function (index) {<!-- [et_pb_line_break_holder] -->    order.push({<!-- [et_pb_line_break_holder] -->      Order: index + 1,<!-- [et_pb_line_break_holder] -->      \"Entry Id\": jQuery(this).data(\"entry-id\"),<!-- [et_pb_line_break_holder] -->      Presentation: jQuery(this).find(\".presentation-label\").text().trim(),<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var resultsDiv = jQuery(\"#presentationorder_results\");<!-- [et_pb_line_break_holder] -->  resultsDiv.html(\"<em>Saving\u2026<\/em>\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  getData({ entryId: entryId, presentationOrder: order }, function (response) {<!-- [et_pb_line_break_holder] -->    const saved =<!-- [et_pb_line_break_holder] -->      response && response.success && response.data && response.data.success;<!-- [et_pb_line_break_holder] -->    if (saved) {<!-- [et_pb_line_break_holder] -->      resultsDiv.html(<!-- [et_pb_line_break_holder] -->        '<span style=\"color:green;\">Order saved!<\/span> ' +<!-- [et_pb_line_break_holder] -->          '<button class=\"setOrder button\">Set this Order<\/button>',<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      const errMsg =<!-- [et_pb_line_break_holder] -->        (response && response.data && response.data.error) || \"unknown error\";<!-- [et_pb_line_break_holder] -->      console.error(\"[AES] Order save failed:\", errMsg, response);<!-- [et_pb_line_break_holder] -->      resultsDiv.html(<!-- [et_pb_line_break_holder] -->        '<span style=\"color:red;\">Save failed (' +<!-- [et_pb_line_break_holder] -->          errMsg +<!-- [et_pb_line_break_holder] -->          \") \u2014 please try again.<\/span> \" +<!-- [et_pb_line_break_holder] -->          '<button class=\"setOrder button\">Set this Order<\/button>',<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Intercept table title clicks \u2014 load the entry inline without any page navigation.<!-- [et_pb_line_break_holder] -->jQuery(document).on(\"click\", \".aes-entry-link\", function (e) {<!-- [et_pb_line_break_holder] -->  e.preventDefault();<!-- [et_pb_line_break_holder] -->  var clickedEntryId = jQuery(this).data(\"entry-id\");<!-- [et_pb_line_break_holder] -->  entryId = clickedEntryId; \/\/ keep the global in sync for createEntryFromResponse<!-- [et_pb_line_break_holder] -->  displayEntry(entryId);<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] -->function displayEntry(entryId) {<!-- [et_pb_line_break_holder] -->  jQuery(\".aesForm\").hide();<!-- [et_pb_line_break_holder] -->  jQuery(\"#entryContent\").empty();<!-- [et_pb_line_break_holder] -->  \/* getData({ entryId: entryId }, function (response) {<!-- [et_pb_line_break_holder] -->    console.log(response.data);<!-- [et_pb_line_break_holder] -->    console.log(response.data?.html);<!-- [et_pb_line_break_holder] -->    createEntryFromResponse(response.data);<!-- [et_pb_line_break_holder] -->  });*\/<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  getData({ renderEntry: true, entryId: entryId }, function (response) {<!-- [et_pb_line_break_holder] -->    renderEntryFromHtml(response.data);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function orderEntries(entries, allEntries) {<!-- [et_pb_line_break_holder] -->  \/\/ Clone arrays to avoid modifying originals<!-- [et_pb_line_break_holder] -->  const entryList = [...entries];<!-- [et_pb_line_break_holder] -->  const allEntryList = [...allEntries];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 1: Create lookup maps<!-- [et_pb_line_break_holder] -->  const entryMap = new Map();<!-- [et_pb_line_break_holder] -->  entryList.forEach((entry) => {<!-- [et_pb_line_break_holder] -->    entryMap.set(entry[\"Entry Id\"], entry);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 2: Sort entries by order<!-- [et_pb_line_break_holder] -->  const sortedEntries = entryList.sort((a, b) => {<!-- [et_pb_line_break_holder] -->    return parseInt(a.Order, 10) - parseInt(b.Order, 10);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 3: Find highest order number<!-- [et_pb_line_break_holder] -->  const highestOrder =<!-- [et_pb_line_break_holder] -->    sortedEntries.length > 0<!-- [et_pb_line_break_holder] -->      ? Math.max(...sortedEntries.map((entry) => parseInt(entry.Order, 10)))<!-- [et_pb_line_break_holder] -->      : 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 4: Find truly unassigned entries (in allEntries but not yet ordered)<!-- [et_pb_line_break_holder] -->  const unassignedEntries = allEntryList.filter((entry) => {<!-- [et_pb_line_break_holder] -->    const entryId = entry.id;<!-- [et_pb_line_break_holder] -->    return !entryMap.has(entryId);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 5: Add unassigned entries with new order numbers<!-- [et_pb_line_break_holder] -->  let nextOrder = highestOrder + 1;<!-- [et_pb_line_break_holder] -->  \/\/ ...entry,<!-- [et_pb_line_break_holder] -->  const newEntries = unassignedEntries.map((entry) => ({<!-- [et_pb_line_break_holder] -->    Order: (nextOrder++).toString(),<!-- [et_pb_line_break_holder] -->    \"Entry Id\": entry.id,<!-- [et_pb_line_break_holder] -->    Presentation: entry[7],<!-- [et_pb_line_break_holder] -->  }));<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Step 6: Combine sorted original entries with new ones<!-- [et_pb_line_break_holder] -->  return [...sortedEntries, ...newEntries];<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function renderEntryFromHtml(data) {<!-- [et_pb_line_break_holder] -->  console.log(\"DEBUG: Using Server-Side Renderer (renderEntryFromHtml)\");<!-- [et_pb_line_break_holder] -->  const backParams = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] -->  backParams.delete(\"entryId\");<!-- [et_pb_line_break_holder] -->  const backUrl = backParams.toString()<!-- [et_pb_line_break_holder] -->    ? `?${backParams.toString()}`<!-- [et_pb_line_break_holder] -->    : window.location.pathname;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const backLink = `<pee><a href=\"${backUrl}\">\u2190 Back to your dashboard<\/a><\/pee>`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (!data || data.error || !data.html) {<!-- [et_pb_line_break_holder] -->    console.error(\"[AES] renderEntryFromHtml error:\", data);<!-- [et_pb_line_break_holder] -->    jQuery(\"#entryContent\")<!-- [et_pb_line_break_holder] -->      .empty()<!-- [et_pb_line_break_holder] -->      .append(<!-- [et_pb_line_break_holder] -->        backLink +<!-- [et_pb_line_break_holder] -->          `<pee style=\"color:red;\">Could not load entry: ${data?.error || \"no HTML returned\"}<\/pee>`,<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->    return;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery(\"#entryContent\")<!-- [et_pb_line_break_holder] -->    .empty()<!-- [et_pb_line_break_holder] -->    .append(<!-- [et_pb_line_break_holder] -->      backLink +<!-- [et_pb_line_break_holder] -->        `<\/p>\n<h1 id=\"entryHeader\"><strong>Response Details<\/strong><\/h1>\n<p>` +<!-- [et_pb_line_break_holder] -->        data.html,<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  \/\/ Abstract submit\/update button<!-- [et_pb_line_break_holder] -->  if (data.can_see_upload) {<!-- [et_pb_line_break_holder] -->    const btnLabel = data.abstract_empty<!-- [et_pb_line_break_holder] -->      ? \"Submit your abstract or file\"<!-- [et_pb_line_break_holder] -->      : \"Update your abstract or file\";<!-- [et_pb_line_break_holder] -->    const btn =<!-- [et_pb_line_break_holder] -->      `<a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSf7EgoEhBVwuQRDzLybHv3g_rfpwmlXi1qiZhOE4iL6hJgqVQ\/viewform` +<!-- [et_pb_line_break_holder] -->      `?usp=pp_url&entry.1730021696=${data.entry_id}\" target=\"_blank\">` +<!-- [et_pb_line_break_holder] -->      `<button>${btnLabel}<\/button><\/a>`;<!-- [et_pb_line_break_holder] -->    let $abstractTarget = null;<!-- [et_pb_line_break_holder] -->    data.abstract_field_ids.forEach(function (fid) {<!-- [et_pb_line_break_holder] -->      const $el = jQuery(`[data-field-id=\"${fid}\"]`);<!-- [et_pb_line_break_holder] -->      if ($el.length) $abstractTarget = $el;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    if ($abstractTarget) {<!-- [et_pb_line_break_holder] -->      $abstractTarget<!-- [et_pb_line_break_holder] -->        .find(\".gfed-field-value, .ginput_container\")<!-- [et_pb_line_break_holder] -->        .last()<!-- [et_pb_line_break_holder] -->        .append(\" \" + btn);<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      jQuery(`[data-field-id=\"17\"]`)<!-- [et_pb_line_break_holder] -->        .find(\".gfed-field-value, .ginput_container\")<!-- [et_pb_line_break_holder] -->        .last()<!-- [et_pb_line_break_holder] -->        .append(\" \" + btn);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Approval radios (only when abstract exists)<!-- [et_pb_line_break_holder] -->  if (data.can_approve && !data.abstract_empty) {<!-- [et_pb_line_break_holder] -->    let $abstractTarget = null;<!-- [et_pb_line_break_holder] -->    data.abstract_field_ids.forEach(function (fid) {<!-- [et_pb_line_break_holder] -->      const $el = jQuery(`[data-field-id=\"${fid}\"]`);<!-- [et_pb_line_break_holder] -->      if ($el.length) $abstractTarget = $el;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    if ($abstractTarget) {<!-- [et_pb_line_break_holder] -->      const radios = UI_AbstractActions(<!-- [et_pb_line_break_holder] -->        data.entry_id,<!-- [et_pb_line_break_holder] -->        data.is_approved,<!-- [et_pb_line_break_holder] -->        data?.abstract_empty,<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->      $abstractTarget<!-- [et_pb_line_break_holder] -->        .find(\".gfed-field-value, .ginput_container\")<!-- [et_pb_line_break_holder] -->        .last()<!-- [et_pb_line_break_holder] -->        .append(radios);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Session-specific: presentations list + ordering (PHP only sets session_title for form 2 entries)<!-- [et_pb_line_break_holder] -->  if (data.session_title) {<!-- [et_pb_line_break_holder] -->    const sessionResponse = {<!-- [et_pb_line_break_holder] -->      original: { value: data.raw_entry || { id: data.entry_id } },<!-- [et_pb_line_break_holder] -->      _field26: { id: 26, value: data.field_26_value },<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    jQuery(\"#entryHeader\").after(<!-- [et_pb_line_break_holder] -->      `<\/p>\n<div><a href=\"#sessionPresentations\">View Presentations<\/a><\/div>\n<p>`,<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Restrict to the same calendar year as the session so prior-year<!-- [et_pb_line_break_holder] -->    \/\/ presentations with the same title aren't included.<!-- [et_pb_line_break_holder] -->    const sessionYear = AES_Utils.getYear(data.raw_entry?.date_created)<!-- [et_pb_line_break_holder] -->      ? AES_Utils.getYear(data.raw_entry.date_created)<!-- [et_pb_line_break_holder] -->      : AES_Utils.getYear(new Date());<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        searchID: data.session_title,<!-- [et_pb_line_break_holder] -->        searchType: \"presentations\",<!-- [et_pb_line_break_holder] -->        startDate: sessionYear + \"-01-01\",<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      function (nextResponse) {<!-- [et_pb_line_break_holder] -->        const entries = nextResponse.data<!-- [et_pb_line_break_holder] -->          ? nextResponse.data.entries<!-- [et_pb_line_break_holder] -->          : nextResponse.entries;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        let valuesString = `<\/p>\n<li>\n<h2 id=\"sessionPresentations\">Presentations in this session:<\/h2>\n<ul>`;<!-- [et_pb_line_break_holder] -->        jQuery.each(entries, function (k, v) {<!-- [et_pb_line_break_holder] -->          valuesString += `<\/p>\n<li><strong><a href=\"?entryId=${v.id}\" target=\"_blank\">${v[7]}<\/a><\/strong>`;<!-- [et_pb_line_break_holder] -->          valuesString += `<!\u2013- [et_pb_br_holder] -\u2013>Abstract\/Image:<!\u2013- [et_pb_br_holder] -\u2013>${v[21] || \"\"} ${v[22] || \"\"}`;<!-- [et_pb_line_break_holder] -->          if (v[37] === \"Yes\") {<!-- [et_pb_line_break_holder] -->            valuesString += `<!\u2013- [et_pb_br_holder] -\u2013><em>Abstract has been approved<\/em>`;<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          \/* valuesString +=<!-- [et_pb_line_break_holder] -->            `<!\u2013- [et_pb_br_holder] -\u2013><strong>Approve Abstract: <\/strong>` +<!-- [et_pb_line_break_holder] -->            `<input name=\"abstract${v.id}\" class=\"approveAbstract\" type=\"radio\" value=\"Yes\"` +<!-- [et_pb_line_break_holder] -->            (v[37] === \"Yes\" ? \" checked\" : \"\") +<!-- [et_pb_line_break_holder] -->            `> Approve  ` +<!-- [et_pb_line_break_holder] -->            `<input name=\"abstract${v.id}\" class=\"approveAbstract\" type=\"radio\" value=\"No\"> Undo Approval`;*\/<!-- [et_pb_line_break_holder] -->          valuesString += `<\/li>\n<p>`;<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        valuesString += \"<\/ul>\n<\/li>\n<p>\";<!-- [et_pb_line_break_holder] -->        jQuery(\"#entryContent\").append(valuesString);<!-- [et_pb_line_break_holder] -->        \/\/ if (response[\"Type of session\"]?.value === \"Sponsored Session\") {<!-- [et_pb_line_break_holder] -->        jQuery(`[data-field-id=\"26\"]`).remove();<!-- [et_pb_line_break_holder] -->        jQuery(\"#entryHeader\").after(<!-- [et_pb_line_break_holder] -->          `<\/p>\n<div><a href=\"#field_26\">Order Presentations<\/a><\/div>\n<p>`,<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->        getSessionOrder(sessionResponse, entries);<!-- [et_pb_line_break_holder] -->        \/\/ } else {<!-- [et_pb_line_break_holder] -->        \/* jQuery(\"#entryContent\")<!-- [et_pb_line_break_holder] -->            .find(\"table\")<!-- [et_pb_line_break_holder] -->            .each(function () {<!-- [et_pb_line_break_holder] -->              createTables(this, data.entry_id, data.raw_entry);<!-- [et_pb_line_break_holder] -->            });*\/<!-- [et_pb_line_break_holder] -->        \/\/ }<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    jQuery(\"#entryContent\")<!-- [et_pb_line_break_holder] -->      .find(\"table\")<!-- [et_pb_line_break_holder] -->      .each(function () {<!-- [et_pb_line_break_holder] -->        createTables(this, data.entry_id, data.raw_entry);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function UI_AbstractActions(entryId, isApproved, isEmpty) {<!-- [et_pb_line_break_holder] -->  const btnLabel = isEmpty ? \"Submit your abstract\" : \"Update your abstract\";<!-- [et_pb_line_break_holder] -->  const approvalRadios = isEmpty<!-- [et_pb_line_break_holder] -->    ? \"\"<!-- [et_pb_line_break_holder] -->    : `<!-- [et_pb_line_break_holder] -->        <!\u2013- [et_pb_br_holder] -\u2013><strong>Approve Abstract: <\/strong><!-- [et_pb_line_break_holder] -->        <input name=\"abstract${entryId}\" class=\"approveAbstract\" type=\"radio\" value=\"Yes\" ${isApproved ? \"checked\" : \"\"}> Approve<!-- [et_pb_line_break_holder] -->        <input name=\"abstract${entryId}\" class=\"approveAbstract\" type=\"radio\" value=\"No\"> Undo Approval`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  return ` ${approvalRadios}`;<!-- [et_pb_line_break_holder] -->  \/*<!-- [et_pb_line_break_holder] -->        <a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSf7EgoEhBVwuQRDzLybHv3g_rfpwmlXi1qiZhOE4iL6hJgqVQ\/viewform` +<!-- [et_pb_line_break_holder] -->          `?usp=pp_url&entry.1730021696=${entryId}\" target=\"_blank\"><!-- [et_pb_line_break_holder] -->            <button>${btnLabel}<\/button><!-- [et_pb_line_break_holder] -->        <\/a>*\/<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/*<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ Render a full entry and all its controls into #entryContent.<!-- [et_pb_line_break_holder] -->\/\/ response is the labeled format returned by get_full_entry_formatted():<!-- [et_pb_line_break_holder] -->\/\/   response[\"Field Label\"] = { value, id, label }<!-- [et_pb_line_break_holder] -->\/\/   response.form_id        = { value: 1|2 }<!-- [et_pb_line_break_holder] -->\/\/   response.original       = { value: <raw GF entry> }<!-- [et_pb_line_break_holder] -->function createEntryFromResponse(response) {<!-- [et_pb_line_break_holder] -->  console.log(\"DEBUG: Using Client-Side Renderer (createEntryFromResponse)\");<!-- [et_pb_line_break_holder] -->  \/\/ Back link strips entryId from the URL to return to the dashboard tables.<!-- [et_pb_line_break_holder] -->  const backParams = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] -->  backParams.delete(\"entryId\");<!-- [et_pb_line_break_holder] -->  const backUrl = backParams.toString()<!-- [et_pb_line_break_holder] -->    ? `?${backParams.toString()}`<!-- [et_pb_line_break_holder] -->    : window.location.pathname;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery(\"#entryContent\").append(<!-- [et_pb_line_break_holder] -->    `<pee><a href=\"${backUrl}\">\u2190 Back to your dashboard<\/a><\/pee>` +<!-- [et_pb_line_break_holder] -->      `<\/p>\n<h1 id=\"entryHeader\"><strong>Response Details<\/strong><\/h1>\n<p>`,<!-- [et_pb_line_break_holder] -->  );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Track whether an Update button has been shown \u2014 once it has, skip any Submit buttons.<!-- [et_pb_line_break_holder] -->  let abstractButtonShown = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ \u2500\u2500 Pre-compute access flags once (referenced inside the loop below) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<!-- [et_pb_line_break_holder] -->  const userEmail = AES_Utils.cleanEmail(currentUser.email);<!-- [et_pb_line_break_holder] -->  const entryEmail = AES_Utils.cleanEmail(response?.Email?.value) || \"\";<!-- [et_pb_line_break_holder] -->  const mentorEmail =<!-- [et_pb_line_break_holder] -->    AES_Utils.cleanEmail(response[\"Mentor Email\"]?.value) || \"\";<!-- [et_pb_line_break_holder] -->  const isPURE = currentUser?.roles?.div === \"PURE\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Presenter emails \u2014 form 1 field 4 (people array with \"WOU Email\" key)<!-- [et_pb_line_break_holder] -->  const presenterEmails = [];<!-- [et_pb_line_break_holder] -->  const presenterField = Object.values(response).find(function (f) {<!-- [et_pb_line_break_holder] -->    return f && typeof f === \"object\" && f.id === 4;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  if (Array.isArray(presenterField?.value)) {<!-- [et_pb_line_break_holder] -->    presenterField.value.forEach(function (p) {<!-- [et_pb_line_break_holder] -->      const e = AES_Utils.cleanEmail(p[\"WOU Email\"] || \"\");<!-- [et_pb_line_break_holder] -->      if (e) presenterEmails.push(e);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Chair emails \u2014 form 2 field 23 (people array with \"email\" key)<!-- [et_pb_line_break_holder] -->  const chairEmails = [];<!-- [et_pb_line_break_holder] -->  const chairField = Object.values(response).find(function (f) {<!-- [et_pb_line_break_holder] -->    return f && typeof f === \"object\" && f.id === 23;<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  if (Array.isArray(chairField?.value)) {<!-- [et_pb_line_break_holder] -->    chairField.value.forEach(function (c) {<!-- [et_pb_line_break_holder] -->      const e = AES_Utils.cleanEmail(c[\"email\"] || c[\"Email\"] || \"\");<!-- [et_pb_line_break_holder] -->      if (e) chairEmails.push(e);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  const canSeeUpload =<!-- [et_pb_line_break_holder] -->    entryEmail === userEmail ||<!-- [et_pb_line_break_holder] -->    mentorEmail === userEmail ||<!-- [et_pb_line_break_holder] -->    presenterEmails.includes(userEmail) ||<!-- [et_pb_line_break_holder] -->    chairEmails.includes(userEmail) ||<!-- [et_pb_line_break_holder] -->    isPURE;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery.each(response, function (key, val) {<!-- [et_pb_line_break_holder] -->    if (key === \"\" || key === \"original\" || key === \"form_id\") return;<!-- [et_pb_line_break_holder] -->    if (!val && val !== 0) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let label = key;<!-- [et_pb_line_break_holder] -->    if (label.match(\/vnumber\/i) || label.match(\/Session Key\/i)) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let thisVal = val?.value !== undefined ? val.value : val;<!-- [et_pb_line_break_holder] -->    let thisId =<!-- [et_pb_line_break_holder] -->      val?.id !== undefined<!-- [et_pb_line_break_holder] -->        ? val.id<!-- [et_pb_line_break_holder] -->        : isNaN(val)<!-- [et_pb_line_break_holder] -->          ? String(val).replace(\/\\W\/, \"\")<!-- [et_pb_line_break_holder] -->          : val;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let valuesString =<!-- [et_pb_line_break_holder] -->      `<\/p>\n<li class=\"gfield\" style=\"list-style:none;\" id=\"field_${thisId}\">` +<!-- [et_pb_line_break_holder] -->      `<strong>${label}: <\/strong>`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let valueType = typeof thisVal;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (valueType === \"object\" && thisVal !== null) {<!-- [et_pb_line_break_holder] -->      \/\/ Array \/ people field \u2014 render as a table if non-empty.<!-- [et_pb_line_break_holder] -->      if (<!-- [et_pb_line_break_holder] -->        (Array.isArray(thisVal) && thisVal.length > 0) ||<!-- [et_pb_line_break_holder] -->        (!Array.isArray(thisVal) && Object.keys(thisVal).length > 0)<!-- [et_pb_line_break_holder] -->      ) {<!-- [et_pb_line_break_holder] -->        valuesString += createTable(<!-- [et_pb_line_break_holder] -->          thisVal,<!-- [et_pb_line_break_holder] -->          label<!-- [et_pb_line_break_holder] -->            .replace(\/[\\W\\s]\/gi, \"\")<!-- [et_pb_line_break_holder] -->            .toLowerCase()<!-- [et_pb_line_break_holder] -->            .trim(),<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      \/\/ Scalar value.<!-- [et_pb_line_break_holder] -->      let thisValStr = String(thisVal ?? \"\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (<!-- [et_pb_line_break_holder] -->        label.replace(\/\\W\/g, \"\") === \"ImageFile\" &&<!-- [et_pb_line_break_holder] -->        thisValStr !== \"\" &&<!-- [et_pb_line_break_holder] -->        !thisValStr.match(\/https\/)<!-- [et_pb_line_break_holder] -->      ) {<!-- [et_pb_line_break_holder] -->        thisValStr = `https:\/\/drive.google.com\/open?id=${thisValStr}`;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (thisValStr !== \"\" && thisValStr.match(\/https:\\\/\\\/\/i)) {<!-- [et_pb_line_break_holder] -->        let fileLink =<!-- [et_pb_line_break_holder] -->          `<a href=\"${thisValStr}\" target=\"_blank\">` +<!-- [et_pb_line_break_holder] -->          thisValStr.replace(<!-- [et_pb_line_break_holder] -->            \/https:\\\/\\\/library\\.wou\\.edu\\\/wp-content\\\/uploads\\\/gravity_forms\\\/.*\\\/[0-9]{4}\\\/[0-9]{2}\\\/\/i,<!-- [et_pb_line_break_holder] -->            \"\",<!-- [et_pb_line_break_holder] -->          ) +<!-- [et_pb_line_break_holder] -->          `<\/a>`;<!-- [et_pb_line_break_holder] -->        if (<!-- [et_pb_line_break_holder] -->          label.replace(\/\\W\/g, \"\") === \"UploadYourSubmission\" ||<!-- [et_pb_line_break_holder] -->          label.replace(\/\\W\/g, \"\") === \"ImageFile\"<!-- [et_pb_line_break_holder] -->        ) {<!-- [et_pb_line_break_holder] -->          valuesString = `<pee><strong>View Submission File:<\/strong><\/pee>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        valuesString += ` ${fileLink}`;<!-- [et_pb_line_break_holder] -->      } else {<!-- [et_pb_line_break_holder] -->        valuesString += ` ${thisValStr}`;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ \u2500\u2500 Abstract \/ image upload + approval controls \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<!-- [et_pb_line_break_holder] -->    const isAbstractField =<!-- [et_pb_line_break_holder] -->      ((label.match(\/Abstract\/i) || label.match(\/image\/i)) &&<!-- [et_pb_line_break_holder] -->        label !== \"Abstract or image files\" &&<!-- [et_pb_line_break_holder] -->        !label.match(\/Approved\/i)) ||<!-- [et_pb_line_break_holder] -->      (label === \"Abstract or image files\" &&<!-- [et_pb_line_break_holder] -->        thisVal === \"I will add an abstract and\/or image file later\");<!-- [et_pb_line_break_holder] -->    if (isAbstractField && canSeeUpload) {<!-- [et_pb_line_break_holder] -->      const isEmpty = thisVal === \"\" || thisVal.match(\/will add an abstract\/i);<!-- [et_pb_line_break_holder] -->      \/\/ Only show a Submit button if no Update button has appeared yet.<!-- [et_pb_line_break_holder] -->      \/\/ Once an Update button is shown, suppress any further Submit buttons.<!-- [et_pb_line_break_holder] -->      if (!isEmpty || !abstractButtonShown) {<!-- [et_pb_line_break_holder] -->        const label = isEmpty<!-- [et_pb_line_break_holder] -->          ? \"Submit your abstract or file\"<!-- [et_pb_line_break_holder] -->          : \"Update your abstract or file\";<!-- [et_pb_line_break_holder] -->        valuesString +=<!-- [et_pb_line_break_holder] -->          ` <a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSf7EgoEhBVwuQRDzLybHv3g_rfpwmlXi1qiZhOE4iL6hJgqVQ\/viewform` +<!-- [et_pb_line_break_holder] -->          `?usp=pp_url&entry.1730021696=${entryId}\" target=\"_blank\">` +<!-- [et_pb_line_break_holder] -->          `<button>${label}<\/button><\/a>`;<!-- [et_pb_line_break_holder] -->        \/\/if (!isEmpty)<!-- [et_pb_line_break_holder] -->        abstractButtonShown = true;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      const canApprove = mentorEmail === userEmail || isPURE;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (canApprove && !isEmpty) {<!-- [et_pb_line_break_holder] -->        const isApproved = response[\"Abstract Approved\"]?.value === \"Yes\";<!-- [et_pb_line_break_holder] -->        const presentationEntryId = response.original?.value?.id || entryId;<!-- [et_pb_line_break_holder] -->        valuesString += UI_AbstractActions(<!-- [et_pb_line_break_holder] -->          presentationEntryId,<!-- [et_pb_line_break_holder] -->          isApproved,<!-- [et_pb_line_break_holder] -->          isEmpty,<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    jQuery(\"#entryContent\").append(`${valuesString}<\/li>\n<p>`);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ \u2500\u2500 Session-specific: presentations list + ordering \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500<!-- [et_pb_line_break_holder] -->  if (response.form_id?.value == 2) {<!-- [et_pb_line_break_holder] -->    response[\"Type of session\"] =<!-- [et_pb_line_break_holder] -->      response[\"Type of session\"] !== undefined<!-- [et_pb_line_break_holder] -->        ? response[\"Type of session\"]<!-- [et_pb_line_break_holder] -->        : response[\"Session Format\"];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Look up session title by field ID (1) so the label name doesn't matter.<!-- [et_pb_line_break_holder] -->    const sessionTitleField = Object.values(response).find(function (f) {<!-- [et_pb_line_break_holder] -->      return f && typeof f === \"object\" && f.id === 1;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    const sessionTitle = sessionTitleField?.value || \"\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Restrict to the same calendar year as the session so prior-year<!-- [et_pb_line_break_holder] -->    \/\/ presentations with the same title aren't included.<!-- [et_pb_line_break_holder] -->    const sessionEntryYear = AES_Utils.getYear(<!-- [et_pb_line_break_holder] -->      response.original?.value?.date_created,<!-- [et_pb_line_break_holder] -->    )<!-- [et_pb_line_break_holder] -->      ? AES_Utils.getYear(response.original.value.date_created)<!-- [et_pb_line_break_holder] -->      : AES_Utils.getYear(new Date());<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let reqData = {<!-- [et_pb_line_break_holder] -->      searchID: sessionTitle,<!-- [et_pb_line_break_holder] -->      searchType: \"presentations\",<!-- [et_pb_line_break_holder] -->      startDate: sessionEntryYear + \"-01-01\",<!-- [et_pb_line_break_holder] -->      fieldKey:<!-- [et_pb_line_break_holder] -->        response[\"Type of session\"]?.value === \"Open Session\"<!-- [et_pb_line_break_holder] -->          ? 12<!-- [et_pb_line_break_holder] -->          : response[\"Type of session\"]?.value === \"Posters\"<!-- [et_pb_line_break_holder] -->            ? 13<!-- [et_pb_line_break_holder] -->            : 10,<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    getData(reqData, function (nextResponse) {<!-- [et_pb_line_break_holder] -->      const entries = nextResponse.data<!-- [et_pb_line_break_holder] -->        ? nextResponse.data.entries<!-- [et_pb_line_break_holder] -->        : nextResponse.entries;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      jQuery(\"#entryHeader\").after(<!-- [et_pb_line_break_holder] -->        `<\/p>\n<div><a href=\"#sessionPresentations\">View Presentations<\/a><\/div>\n<p>`,<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      let valuesString = `<\/p>\n<li>\n<h2 id=\"sessionPresentations\">Presentations in this session:<\/h2>\n<ul>`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      jQuery.each(entries, function (k, v) {<!-- [et_pb_line_break_holder] -->        valuesString += `<\/p>\n<li><strong>${v[7]}<\/strong>`;<!-- [et_pb_line_break_holder] -->        valuesString += `<!\u2013- [et_pb_br_holder] -\u2013>Abstract\/Image:<!\u2013- [et_pb_br_holder] -\u2013>${v[21] || \"\"} ${v[22] || \"\"}`;<!-- [et_pb_line_break_holder] -->        if (v[37] === \"Yes\") {<!-- [et_pb_line_break_holder] -->          valuesString += `<!\u2013- [et_pb_br_holder] -\u2013><em>Abstract has been approved<\/em>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        valuesString += UI_AbstractActions(v.id, v[37], null);<!-- [et_pb_line_break_holder] -->        valuesString += `<\/li>\n<p>`;<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      valuesString += \"<\/ul>\n<\/li>\n<p>\";<!-- [et_pb_line_break_holder] -->      jQuery(\"#entryContent\").append(valuesString);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (response[\"Type of session\"]?.value === \"Sponsored Session\") {<!-- [et_pb_line_break_holder] -->        jQuery(\"#entryHeader\").after(<!-- [et_pb_line_break_holder] -->          `<\/p>\n<div><a href=\"#field_26\">Order Presentations<\/a><\/div>\n<p>`,<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->        getSessionOrder(response, entries);<!-- [et_pb_line_break_holder] -->      } else {<!-- [et_pb_line_break_holder] -->        let tableArr = jQuery(document).find(\"table\");<!-- [et_pb_line_break_holder] -->        jQuery.each(tableArr, function (key, tableObj) {<!-- [et_pb_line_break_holder] -->          createTables(tableObj, entryId, response.original.value);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  } else {<!-- [et_pb_line_break_holder] -->    let tableArr = jQuery(document).find(\"table\");<!-- [et_pb_line_break_holder] -->    jQuery.each(tableArr, function (key, tableObj) {<!-- [et_pb_line_break_holder] -->      if (jQuery(tableObj).find(\"th\").length > 0)<!-- [et_pb_line_break_holder] -->        createTables(tableObj, entryId, response.original.value);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->  *\/<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_text admin_label=&#8221;Table holder&#8221; module_id=&#8221;aesContent&#8221; _builder_version=&#8221;4.27.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_text][et_pb_code admin_label=&#8221;JS Code&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->let newData = [];<!-- [et_pb_line_break_holder] -->let sessionList = {};<!-- [et_pb_line_break_holder] -->let presentationList = {};<!-- [et_pb_line_break_holder] -->let chairList = {};<!-- [et_pb_line_break_holder] -->let presenterList = {};<!-- [et_pb_line_break_holder] -->let mentorList = {};<!-- [et_pb_line_break_holder] -->var archived = false; \/\/change to make variable<!-- [et_pb_line_break_holder] -->let tags = [];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->paceOptions = { startOnPageLoad: false };<!-- [et_pb_line_break_holder] -->\/\/Pace.options = { startOnPageLoad: false};<!-- [et_pb_line_break_holder] -->jQuery(\"#aesProgram\").find(\"table\").show();<!-- [et_pb_line_break_holder] -->\/*let presentationTable = jQuery(\"#aesTable\").DataTable({<!-- [et_pb_line_break_holder] -->  language: {<!-- [et_pb_line_break_holder] -->        emptyTable: \"Data loading...\",<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->    });*\/<!-- [et_pb_line_break_holder] -->\/\/function that returns a promise when data is returned<!-- [et_pb_line_break_holder] -->function getDataPromise(params) {<!-- [et_pb_line_break_holder] -->  return new Promise((resolve, reject) => {<!-- [et_pb_line_break_holder] -->    getData(<!-- [et_pb_line_break_holder] -->      params,<!-- [et_pb_line_break_holder] -->      function (response) {<!-- [et_pb_line_break_holder] -->        resolve(response);<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      \"#aesContent\",<!-- [et_pb_line_break_holder] -->    );<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/\/ Get all of the presentations and sessions<!-- [et_pb_line_break_holder] -->jQuery(document).ready(function () {<!-- [et_pb_line_break_holder] -->  let sessionListPromise = getDataPromise({ formId: 2, getEntries: \"yes\" });<!-- [et_pb_line_break_holder] -->  let presentationListPromise = getDataPromise({<!-- [et_pb_line_break_holder] -->    formId: 1,<!-- [et_pb_line_break_holder] -->    getEntries: \"yes\",<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  jQuery<!-- [et_pb_line_break_holder] -->    .when(sessionListPromise, presentationListPromise)<!-- [et_pb_line_break_holder] -->    .done(function (sessionResult, presentationResult) {<!-- [et_pb_line_break_holder] -->      aesData = retrieveSessionTest(<!-- [et_pb_line_break_holder] -->        sessionResult.data,<!-- [et_pb_line_break_holder] -->        presentationResult.data,<!-- [et_pb_line_break_holder] -->        archived,<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->      jQuery(\"#aesContent\").html(<!-- [et_pb_line_break_holder] -->        `<\/p>\n<table style=\"width:100%; border:none;\" id=\"aesTable\" class=\"table table-striped\">\n<thead><\/thead>\n<tbody><\/tbody>\n<\/table>\n<p>`,<!-- [et_pb_line_break_holder] -->      );<!-- [et_pb_line_break_holder] -->      jQuery(\"#aesProgram\").find(\"table\").show();<!-- [et_pb_line_break_holder] -->      \/\/ Diagnostic \u2014 remove after debugging<!-- [et_pb_line_break_holder] -->      const linkedIds = new Set();<!-- [et_pb_line_break_holder] -->      Object.values(aesData.sessions).forEach(s => {<!-- [et_pb_line_break_holder] -->        if (s.presentations) Object.keys(s.presentations).forEach(id => linkedIds.add(String(id)));<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      const allPres = Object.values(aesData.presentations).filter(p => p[\"39.1\"] != \"Yes\");<!-- [et_pb_line_break_holder] -->      const unlinked = allPres.filter(p => !linkedIds.has(String(p.id)));<!-- [et_pb_line_break_holder] -->      console.log(`[AES] Total: ${allPres.length}, Linked: ${linkedIds.size}, Unlinked: ${unlinked.length}`);<!-- [et_pb_line_break_holder] -->      console.log(\"[AES] Unlinked:\", unlinked.map(p => `${p.id}: f10=${JSON.stringify(p[10])} f12=${JSON.stringify(p[12])} f13=${JSON.stringify(p[13])} title=${p[7]}`).join(\"\\n\"));<!-- [et_pb_line_break_holder] -->      \/\/ End diagnostic<!-- [et_pb_line_break_holder] -->      add12HrSort();<!-- [et_pb_line_break_holder] -->      setSchedule();<!-- [et_pb_line_break_holder] -->      if (jQuery(\"#aesTable thead th\").length > 0) {<!-- [et_pb_line_break_holder] -->        createTables(jQuery(\"#aesTable\"), \"setSchedule\");<!-- [et_pb_line_break_holder] -->      } else {<!-- [et_pb_line_break_holder] -->        jQuery(\"#aesContent\").append(<!-- [et_pb_line_break_holder] -->          '<pee>No sessions found for the selected year. Try <a href=\"?aesyear=all\">showing all years<\/a>.<\/pee>',<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>View by&#8230;<\/p>\n","protected":false},"author":417,"featured_media":0,"parent":1103,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"splash-page.php","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_lmt_disableupdate":"","_lmt_disable":"","_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-1144","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/pages\/1144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/users\/417"}],"replies":[{"embeddable":true,"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/comments?post=1144"}],"version-history":[{"count":20,"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/pages\/1144\/revisions"}],"predecessor-version":[{"id":26712,"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/pages\/1144\/revisions\/26712"}],"up":[{"embeddable":true,"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/pages\/1103"}],"wp:attachment":[{"href":"https:\/\/wou.edu\/pure\/wp-json\/wp\/v2\/media?parent=1144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}