{"id":1102,"date":"2024-05-06T18:42:53","date_gmt":"2024-05-06T18:42:53","guid":{"rendered":"https:\/\/education.ufl.edu\/program-directory\/?page_id=1102"},"modified":"2024-09-18T13:17:00","modified_gmt":"2024-09-18T13:17:00","slug":"testing","status":"publish","type":"page","link":"https:\/\/education.ufl.edu\/program-directory\/testing\/","title":{"rendered":"testing"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; custom_css_main_element=&#8221;@media (max-width:600px) {||  .post-preview {||display: block;  }||  ||  .post-preview img {||    width:100%;||  }||  ||  .post-content {||    width: 100%;||  }||}&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->a {<!-- [et_pb_line_break_holder] -->  text-decoration: none;<!-- [et_pb_line_break_holder] -->  border: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->  a:hover {<!-- [et_pb_line_break_holder] -->    text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->main.container {<!-- [et_pb_line_break_holder] -->  margin-top: 32px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.container__title {<!-- [et_pb_line_break_holder] -->  font-weight: 700;<!-- [et_pb_line_break_holder] -->  font-size: 14px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->#posts-container {<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap;<!-- [et_pb_line_break_holder] -->  justify-content: center;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post-content p {<!-- [et_pb_line_break_holder] -->    color: #0a0a0a;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post {<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->  position: relative;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e1e8ed;<!-- [et_pb_line_break_holder] -->  margin-top: 12px;<!-- [et_pb_line_break_holder] -->  max-width: 1600px;<!-- [et_pb_line_break_holder] -->  height: fit-content;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post:hover {<!-- [et_pb_line_break_holder] -->    outline: 1.5px solid #1f7e98 !important;<!-- [et_pb_line_break_holder] -->  }  <!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->.post-title {<!-- [et_pb_line_break_holder] -->  margin-top: 0;<!-- [et_pb_line_break_holder] -->  overflow: hidden;<!-- [et_pb_line_break_holder] -->  text-overflow: ellipsis;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase;<!-- [et_pb_line_break_holder] -->    \tfont-family: 'Lato', Helvetica, Arial, Lucida, sans-serif !important;<!-- [et_pb_line_break_holder] -->    font-weight: 900;<!-- [et_pb_line_break_holder] -->    text-transform: uppercase;<!-- [et_pb_line_break_holder] -->    font-size: 18px;<!-- [et_pb_line_break_holder] -->    color: #CC4927 !important;<!-- [et_pb_line_break_holder] -->    letter-spacing: 1px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> .post-small-title {<!-- [et_pb_line_break_holder] -->    color: #5a5a5a;<!-- [et_pb_line_break_holder] -->   padding-bottom: 0 !important;<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post-content {<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->  flex-direction: column;<!-- [et_pb_line_break_holder] -->  flex-grow: 1;<!-- [et_pb_line_break_holder] -->  padding: 16px;<!-- [et_pb_line_break_holder] -->  width: 75%;<!-- [et_pb_line_break_holder] -->  padding: 28px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post-preview {<!-- [et_pb_line_break_holder] -->  overflow: hidden;<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post-preview img {<!-- [et_pb_line_break_holder] -->    width: 35%;<!-- [et_pb_line_break_holder] -->    object-fit: cover;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post-tag {<!-- [et_pb_line_break_holder] -->  display: inline-block;<!-- [et_pb_line_break_holder] -->  margin-right: 10px;<!-- [et_pb_line_break_holder] -->  margin-bottom: 10px;<!-- [et_pb_line_break_holder] -->  padding: 0 8px;<!-- [et_pb_line_break_holder] -->  color: #717171;<!-- [et_pb_line_break_holder] -->  border: 1px solid #9b9b9b;<!-- [et_pb_line_break_holder] -->  border-radius: 25px;<!-- [et_pb_line_break_holder] -->  white-space: nowrap;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.post-type {<!-- [et_pb_line_break_holder] -->  font: 700 12px\/1 system-ui, Roboto, Arial, sans-serif;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase;<!-- [et_pb_line_break_holder] -->  display: inline-block;<!-- [et_pb_line_break_holder] -->  -webkit-font-smoothing: subpixel-antialiased;<!-- [et_pb_line_break_holder] -->  color: #0085b6;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.filter-container {<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap;<!-- [et_pb_line_break_holder] -->  justify-content: flex-start;<!-- [et_pb_line_break_holder] -->  gap: 10px;<!-- [et_pb_line_break_holder] -->  padding: 16px 0 32px;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #e4e4e4;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.filter-button {<!-- [et_pb_line_break_holder] -->  transition: background-color 200ms, color 200ms;<!-- [et_pb_line_break_holder] -->  background-color: transparent;<!-- [et_pb_line_break_holder] -->  font: inherit;<!-- [et_pb_line_break_holder] -->  cursor: pointer;<!-- [et_pb_line_break_holder] -->  display: inline-block;<!-- [et_pb_line_break_holder] -->  padding: 0 8px;<!-- [et_pb_line_break_holder] -->  color: #717171;<!-- [et_pb_line_break_holder] -->  border: 1px solid #9b9b9b;<!-- [et_pb_line_break_holder] -->  border-radius: 25px;<!-- [et_pb_line_break_holder] -->  font-size: 1em;<!-- [et_pb_line_break_holder] -->  white-space: nowrap;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.filter-button:hover {<!-- [et_pb_line_break_holder] -->  background-color: #f3f3f3;<!-- [et_pb_line_break_holder] -->  color: #3a3a3a;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.filter-button.is-active {<!-- [et_pb_line_break_holder] -->  background-color: #194588;<!-- [et_pb_line_break_holder] -->  border-color: #194588;<!-- [et_pb_line_break_holder] -->  color: #fff;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!DOCTYPE html><!-- [et_pb_line_break_holder] --><html lang=\"en\"><!-- [et_pb_line_break_holder] --><head><!-- [et_pb_line_break_holder] -->    <meta charset=\"UTF-8\"><!-- [et_pb_line_break_holder] -->    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><!-- [et_pb_line_break_holder] -->    <title>Program Listings<\/title><!-- [et_pb_line_break_holder] --><\/head><!-- [et_pb_line_break_holder] --><body><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"container__title\">Degree Type<\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/p>\n<div id=\"post-categories\" class=\"filter-container\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"container__title\">Program Type<\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/p>\n<div id=\"post-type\" class=\"filter-container\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"container__title\">Filters<\/div>\n<p><!-- [et_pb_line_break_holder] -->    <button id=\"reset-filters\" class=\"filter-button\">Reset Filters<\/button><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"container__title\"><!-- [et_pb_line_break_holder] -->        Program Offerings(<span id=\"post-count\"><\/span>)<!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/p>\n<div id=\"posts-container\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->    <pee id=\"no-results\"><\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script><!-- [et_pb_line_break_holder] -->    <script><!-- [et_pb_line_break_holder] -->        let postsData;<!-- [et_pb_line_break_holder] -->        let currentFilters = {<!-- [et_pb_line_break_holder] -->            categories: [],<!-- [et_pb_line_break_holder] -->            types: []<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const postsContainer = document.querySelector(\"#posts-container\");<!-- [et_pb_line_break_holder] -->        const categoriesContainer = document.querySelector(\"#post-categories\");<!-- [et_pb_line_break_holder] -->        const typesContainer = document.querySelector(\"#post-type\");<!-- [et_pb_line_break_holder] -->        const postCount = document.querySelector(\"#post-count\");<!-- [et_pb_line_break_holder] -->        const noResults = document.querySelector(\"#no-results\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        function getHashFilter() {<!-- [et_pb_line_break_holder] -->            const hash = window.location.hash.substring(1); \/\/ Remove the '#' character<!-- [et_pb_line_break_holder] -->            return hash.toLowerCase();<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        function applyPrefilter(filter) {<!-- [et_pb_line_break_holder] -->            if (filter === 'undergrad') {<!-- [et_pb_line_break_holder] -->                \/\/ Assuming 'Undergraduate' is the exact text used in your filter buttons<!-- [et_pb_line_break_holder] -->                const undergradButton = Array.from(document.querySelectorAll('.filter-button'))<!-- [et_pb_line_break_holder] -->                    .find(button => button.innerText.toLowerCase() === 'undergraduate');<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                if (undergradButton) {<!-- [et_pb_line_break_holder] -->                    undergradButton.click(); \/\/ Simulate a click on the Undergraduate filter button<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            \/\/ Add more conditions here for other prefilters if needed<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        function updateUrlHash() {<!-- [et_pb_line_break_holder] -->            let hash = '';<!-- [et_pb_line_break_holder] -->            if (currentFilters.categories.includes('Undergraduate')) {<!-- [et_pb_line_break_holder] -->                hash = 'undergrad';<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            \/\/ Add more conditions here for other filters if needed<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            window.location.hash = hash;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        fetch(\"\/wp-json\/api\/v1\/programs\/get\")<!-- [et_pb_line_break_holder] -->            .then(async (response) => {<!-- [et_pb_line_break_holder] -->                postsData = await response.json();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                postsData.sort((a, b) => a.title.localeCompare(b.title));<!-- [et_pb_line_break_holder] -->                postsData.forEach((post) => createPost(post));<!-- [et_pb_line_break_holder] -->                postCount.innerText = postsData.length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                registerListeners();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                categoriesData = [<!-- [et_pb_line_break_holder] -->                    ...new Set(<!-- [et_pb_line_break_holder] -->                        postsData<!-- [et_pb_line_break_holder] -->                            .map((post) => JSON.parse(post.categories))<!-- [et_pb_line_break_holder] -->                            .reduce((acc, curVal) => acc.concat(curVal), [])<!-- [et_pb_line_break_holder] -->                    )<!-- [et_pb_line_break_holder] -->                ].sort();<!-- [et_pb_line_break_holder] -->                categoriesData.map((category) =><!-- [et_pb_line_break_holder] -->                    createFilter(\"categories\", category, categoriesContainer)<!-- [et_pb_line_break_holder] -->                );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                typeData = [<!-- [et_pb_line_break_holder] -->                    ...new Set(<!-- [et_pb_line_break_holder] -->                        postsData<!-- [et_pb_line_break_holder] -->                            .map((post) => JSON.parse(post.types))<!-- [et_pb_line_break_holder] -->                            .reduce((acc, curVal) => acc.concat(curVal), [])<!-- [et_pb_line_break_holder] -->                    )<!-- [et_pb_line_break_holder] -->                ].sort();<!-- [et_pb_line_break_holder] -->                typeData.map((type) => createFilter(\"types\", type, typesContainer));<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                addResetButton();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Apply prefilter based on URL hash<!-- [et_pb_line_break_holder] -->                const prefilter = getHashFilter();<!-- [et_pb_line_break_holder] -->                applyPrefilter(prefilter);<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const createPost = (postData) => {<!-- [et_pb_line_break_holder] -->            var { title, link, intro, image, programs, categories, types } = postData;<!-- [et_pb_line_break_holder] -->            const post = document.createElement(\"div\");<!-- [et_pb_line_break_holder] -->            post.className = \"post\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (typeof programs != \"object\") programs = JSON.parse(programs);<!-- [et_pb_line_break_holder] -->            if (typeof categories != \"object\") categories = JSON.parse(categories);<!-- [et_pb_line_break_holder] -->            if (typeof types != \"object\") types = JSON.parse(types);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            var programslist = \"\";<!-- [et_pb_line_break_holder] -->            programs.forEach(function (program, pi) {<!-- [et_pb_line_break_holder] -->                programslist += '<\/p>\n<div class=\"program-link\" href=\"' + program.sublink + '\" target=\"_blank\">' + program.name + '<\/div>\n<p>'<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            $(post).html(`<!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"post-preview\" href=\"${link}\" target=\"_blank\"><!-- [et_pb_line_break_holder] -->                    <img decoding=\"async\" class=\"post-image\" src=\"${image}\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"post-content\"><!-- [et_pb_line_break_holder] -->                        <\/p>\n<h3 class=\"post-title\">${title}<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                        <!-- [et_pb_line_break_holder] -->                        <\/p>\n<div class=\"post-tags\"><!-- [et_pb_line_break_holder] -->                            ${categories<!-- [et_pb_line_break_holder] -->                    .map((category) => {<!-- [et_pb_line_break_holder] -->                        return '<span class=\"post-tag\">' + category + \"<\/span>\";<!-- [et_pb_line_break_holder] -->                    })<!-- [et_pb_line_break_holder] -->                    .join(\"\")}<!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <!-- [et_pb_line_break_holder] -->                        <pee>${intro}<\/pee><!-- [et_pb_line_break_holder] -->                        <pee class=\"post-small-title\"><em>Program(s) Available:<\/em><\/pee><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div class=\"post-program\"><!-- [et_pb_line_break_holder] -->                            ${programslist}<!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            `);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            postsContainer.append(post);<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const openInNewTab = function (url, tab) {<!-- [et_pb_line_break_holder] -->            if (!url) return;<!-- [et_pb_line_break_holder] -->            window.open(url, tab || '_blank');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const registerListeners = () => {<!-- [et_pb_line_break_holder] -->            $(\".post-preview\").off(\"click\").click(function () {<!-- [et_pb_line_break_holder] -->                var href = $(this).attr(\"href\");<!-- [et_pb_line_break_holder] -->                var target = $(this).attr(\"target\");<!-- [et_pb_line_break_holder] -->                openInNewTab(href, target);<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            $(\".program-link\").off(\"click\").click(function (e) {<!-- [et_pb_line_break_holder] -->                e.stopPropagation();<!-- [et_pb_line_break_holder] -->                var href = $(this).attr(\"href\");<!-- [et_pb_line_break_holder] -->                var target = $(this).attr(\"target\");<!-- [et_pb_line_break_holder] -->                openInNewTab(href, target);<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const createFilter = (key, param, container) => {<!-- [et_pb_line_break_holder] -->            const filterButton = document.createElement(\"button\");<!-- [et_pb_line_break_holder] -->            filterButton.className = \"filter-button\";<!-- [et_pb_line_break_holder] -->            filterButton.innerText = param;<!-- [et_pb_line_break_holder] -->            filterButton.setAttribute(\"data-state\", \"inactive\");<!-- [et_pb_line_break_holder] -->            filterButton.addEventListener(\"click\", (e) =><!-- [et_pb_line_break_holder] -->                handleButtonClick(e, key, param, container)<!-- [et_pb_line_break_holder] -->            );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            container.append(filterButton);<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const handleButtonClick = (e, key, param, container) => {<!-- [et_pb_line_break_holder] -->            const button = e.target;<!-- [et_pb_line_break_holder] -->            const buttonState = button.getAttribute(\"data-state\");<!-- [et_pb_line_break_holder] -->            if (buttonState == \"inactive\") {<!-- [et_pb_line_break_holder] -->                button.classList.add(\"is-active\");<!-- [et_pb_line_break_holder] -->                button.setAttribute(\"data-state\", \"active\");<!-- [et_pb_line_break_holder] -->                currentFilters[key].push(param);<!-- [et_pb_line_break_holder] -->            } else {<!-- [et_pb_line_break_holder] -->                button.classList.remove(\"is-active\");<!-- [et_pb_line_break_holder] -->                button.setAttribute(\"data-state\", \"inactive\");<!-- [et_pb_line_break_holder] -->                currentFilters[key] = currentFilters[key].filter((item) => item !== param);<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            handleFilterPosts(currentFilters);<!-- [et_pb_line_break_holder] -->            registerListeners();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Update URL hash based on active filters<!-- [et_pb_line_break_holder] -->            updateUrlHash();<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const handleFilterPosts = (filters) => {<!-- [et_pb_line_break_holder] -->            let filteredPosts = [...postsData];<!-- [et_pb_line_break_holder] -->            let filterKeys = Object.keys(filters);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Only apply filtering if there are active filters<!-- [et_pb_line_break_holder] -->            if (filterKeys.some(key => filters[key].length > 0)) {<!-- [et_pb_line_break_holder] -->                filteredPosts = filteredPosts.filter(post => {<!-- [et_pb_line_break_holder] -->                    return filterKeys.every(key => {<!-- [et_pb_line_break_holder] -->                        if (filters[key].length === 0) return true; \/\/ Skip this filter if no options are selected<!-- [et_pb_line_break_holder] -->                        <!-- [et_pb_line_break_holder] -->                        let postValues;<!-- [et_pb_line_break_holder] -->                        if (key === 'types') {<!-- [et_pb_line_break_holder] -->                            postValues = JSON.parse(post.types);<!-- [et_pb_line_break_holder] -->                        } else if (key === 'categories') {<!-- [et_pb_line_break_holder] -->                            postValues = JSON.parse(post.categories);<!-- [et_pb_line_break_holder] -->                        } else {<!-- [et_pb_line_break_holder] -->                            return true; \/\/ Skip unknown keys<!-- [et_pb_line_break_holder] -->                        }<!-- [et_pb_line_break_holder] -->                        <!-- [et_pb_line_break_holder] -->                        if (!Array.isArray(postValues)) postValues = [postValues];<!-- [et_pb_line_break_holder] -->                        <!-- [et_pb_line_break_holder] -->                        \/\/ Check if the post has ALL of the selected filter values for this key<!-- [et_pb_line_break_holder] -->                        return filters[key].every(filterValue => <!-- [et_pb_line_break_holder] -->                            postValues.includes(filterValue)<!-- [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] -->            postCount.innerText = filteredPosts.length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (filteredPosts.length == 0) {<!-- [et_pb_line_break_holder] -->                noResults.innerText = \"Sorry, we couldn't find any results.\";<!-- [et_pb_line_break_holder] -->            } else {<!-- [et_pb_line_break_holder] -->                noResults.innerText = \"\";<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            postsContainer.innerHTML = \"\";<!-- [et_pb_line_break_holder] -->            filteredPosts.forEach(post => createPost(post));<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            registerListeners();<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        function addResetButton() {<!-- [et_pb_line_break_holder] -->            const resetButton = document.getElementById('reset-filters');<!-- [et_pb_line_break_holder] -->            resetButton.addEventListener('click', resetFilters);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        function resetFilters() {<!-- [et_pb_line_break_holder] -->            \/\/ Clear the currentFilters object<!-- [et_pb_line_break_holder] -->            Object.keys(currentFilters).forEach(key => {<!-- [et_pb_line_break_holder] -->                currentFilters[key] = [];<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Reset all filter buttons to inactive state<!-- [et_pb_line_break_holder] -->            document.querySelectorAll('.filter-button').forEach(button => {<!-- [et_pb_line_break_holder] -->                button.classList.remove('is-active');<!-- [et_pb_line_break_holder] -->                button.setAttribute('data-state', 'inactive');<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Reset the posts display<!-- [et_pb_line_break_holder] -->            postsContainer.innerHTML = \"\";<!-- [et_pb_line_break_holder] -->            postsData.forEach(post => createPost(post));<!-- [et_pb_line_break_holder] -->            postCount.innerText = postsData.length;<!-- [et_pb_line_break_holder] -->            noResults.innerText = \"\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            registerListeners();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Clear the URL hash<!-- [et_pb_line_break_holder] -->            history.pushState(\"\", document.title, window.location.pathname + window.location.search);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    <\/script><!-- [et_pb_line_break_holder] --><\/body><!-- [et_pb_line_break_holder] --><\/html>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":21,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-1102","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.0 (Yoast SEO v22.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>testing - Program Directory<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/education.ufl.edu\/program-directory\/testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"testing\" \/>\n<meta property=\"og:url\" content=\"https:\/\/education.ufl.edu\/program-directory\/testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Program Directory\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/UF.COE\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-18T13:17:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@UF_COE\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/testing\/\",\"url\":\"https:\/\/education.ufl.edu\/program-directory\/testing\/\",\"name\":\"testing - Program Directory\",\"isPartOf\":{\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/#website\"},\"datePublished\":\"2024-05-06T18:42:53+00:00\",\"dateModified\":\"2024-09-18T13:17:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/education.ufl.edu\/program-directory\/testing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/education.ufl.edu\/program-directory\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/#website\",\"url\":\"https:\/\/education.ufl.edu\/program-directory\/\",\"name\":\"Program Directory\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/education.ufl.edu\/program-directory\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/#organization\",\"name\":\"University of Florida\",\"url\":\"https:\/\/education.ufl.edu\/program-directory\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/education.ufl.edu\/program-directory\/files\/2024\/01\/Horizontal_UF_COE_2020_Blue-Black.png\",\"contentUrl\":\"https:\/\/education.ufl.edu\/program-directory\/files\/2024\/01\/Horizontal_UF_COE_2020_Blue-Black.png\",\"width\":2098,\"height\":216,\"caption\":\"University of Florida\"},\"image\":{\"@id\":\"https:\/\/education.ufl.edu\/program-directory\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/UF.COE\/\",\"https:\/\/twitter.com\/UF_COE\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"testing - Program Directory","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/education.ufl.edu\/program-directory\/testing\/","og_locale":"en_US","og_type":"article","og_title":"testing","og_url":"https:\/\/education.ufl.edu\/program-directory\/testing\/","og_site_name":"Program Directory","article_publisher":"https:\/\/www.facebook.com\/UF.COE\/","article_modified_time":"2024-09-18T13:17:00+00:00","twitter_card":"summary_large_image","twitter_site":"@UF_COE","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/education.ufl.edu\/program-directory\/testing\/","url":"https:\/\/education.ufl.edu\/program-directory\/testing\/","name":"testing - Program Directory","isPartOf":{"@id":"https:\/\/education.ufl.edu\/program-directory\/#website"},"datePublished":"2024-05-06T18:42:53+00:00","dateModified":"2024-09-18T13:17:00+00:00","breadcrumb":{"@id":"https:\/\/education.ufl.edu\/program-directory\/testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/education.ufl.edu\/program-directory\/testing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/education.ufl.edu\/program-directory\/testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/education.ufl.edu\/program-directory\/"},{"@type":"ListItem","position":2,"name":"testing"}]},{"@type":"WebSite","@id":"https:\/\/education.ufl.edu\/program-directory\/#website","url":"https:\/\/education.ufl.edu\/program-directory\/","name":"Program Directory","description":"","publisher":{"@id":"https:\/\/education.ufl.edu\/program-directory\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/education.ufl.edu\/program-directory\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/education.ufl.edu\/program-directory\/#organization","name":"University of Florida","url":"https:\/\/education.ufl.edu\/program-directory\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/education.ufl.edu\/program-directory\/#\/schema\/logo\/image\/","url":"https:\/\/education.ufl.edu\/program-directory\/files\/2024\/01\/Horizontal_UF_COE_2020_Blue-Black.png","contentUrl":"https:\/\/education.ufl.edu\/program-directory\/files\/2024\/01\/Horizontal_UF_COE_2020_Blue-Black.png","width":2098,"height":216,"caption":"University of Florida"},"image":{"@id":"https:\/\/education.ufl.edu\/program-directory\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/UF.COE\/","https:\/\/twitter.com\/UF_COE"]}]}},"_links":{"self":[{"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/pages\/1102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/comments?post=1102"}],"version-history":[{"count":38,"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/pages\/1102\/revisions"}],"predecessor-version":[{"id":1699,"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/pages\/1102\/revisions\/1699"}],"wp:attachment":[{"href":"https:\/\/education.ufl.edu\/program-directory\/wp-json\/wp\/v2\/media?parent=1102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}