{"id":541,"date":"2025-01-13T09:00:34","date_gmt":"2025-01-13T09:00:34","guid":{"rendered":"https:\/\/concept.burocite.nl\/?page_id=541"},"modified":"2025-03-31T14:21:16","modified_gmt":"2025-03-31T14:21:16","slug":"projecten","status":"publish","type":"page","link":"https:\/\/es8.nl\/en\/projecten\/","title":{"rendered":"PROJECTS"},"content":{"rendered":"[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<!DOCTYPE html><!-- [et_pb_line_break_holder] --><html lang=\"nl\"><!-- [et_pb_line_break_holder] --><head><!-- [et_pb_line_break_holder] -->  <title>Projects<\/title><!-- [et_pb_line_break_holder] -->  <!-- Tailwind CSS (use a Tailwind plugin or CDN in Divi) --><!-- [et_pb_line_break_holder] -->  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script><!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  <style><!-- [et_pb_line_break_holder] -->    \/* LinkedIn Icon *\/<!-- [et_pb_line_break_holder] -->    .et_pb_linkedin_icon {<!-- [et_pb_line_break_holder] -->      display: inline-block;<!-- [et_pb_line_break_holder] -->      background-color: #0077B5; \/* LinkedIn blue *\/<!-- [et_pb_line_break_holder] -->      color: #FFFFFF !important; \/* White icon *\/<!-- [et_pb_line_break_holder] -->      width: 32px;<!-- [et_pb_line_break_holder] -->      height: 32px;<!-- [et_pb_line_break_holder] -->      line-height: 32px;<!-- [et_pb_line_break_holder] -->      text-align: center;<!-- [et_pb_line_break_holder] -->      border-radius: 4px;<!-- [et_pb_line_break_holder] -->      font-size: 16px;<!-- [et_pb_line_break_holder] -->      font-weight: bold;<!-- [et_pb_line_break_holder] -->      transition: background-color 0.3s ease;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    .et_pb_linkedin_icon:hover {<!-- [et_pb_line_break_holder] -->      background-color: #005983; \/* Darker LinkedIn blue *\/<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/* Contact card styling *\/<!-- [et_pb_line_break_holder] -->    .contact-card {<!-- [et_pb_line_break_holder] -->      max-width: 20rem;<!-- [et_pb_line_break_holder] -->      background: #fff;<!-- [et_pb_line_break_holder] -->      border: 1px solid #ddd;<!-- [et_pb_line_break_holder] -->      border-radius: 0.5rem;<!-- [et_pb_line_break_holder] -->      overflow: hidden;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      margin: 1rem auto;<!-- [et_pb_line_break_holder] -->      text-align: center;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    .contact-card img {<!-- [et_pb_line_break_holder] -->      width: 100%;<!-- [et_pb_line_break_holder] -->      height: auto;<!-- [et_pb_line_break_holder] -->      object-fit: contain;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  <\/style><!-- [et_pb_line_break_holder] --><\/head><!-- [et_pb_line_break_holder] --><body class=\"min-h-screen bg-gradient-to-b from-gray-100 to-white text-gray-900\"><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <!-- Main Container --><!-- [et_pb_line_break_holder] -->  <div class=\"w-full max-w-screen-xl mx-auto py-8 px-4\"><!-- [et_pb_line_break_holder] -->    <!-- (A) Filters + Projects Wrapper --><!-- [et_pb_line_break_holder] -->    <div id=\"filtersAndProjects\"><!-- [et_pb_line_break_holder] -->      <!-- Top Bar: Heading + Filters --><!-- [et_pb_line_break_holder] -->      <div class=\"flex flex-col md:flex-row md:items-center md:justify-between mb-6 gap-4\"><!-- [et_pb_line_break_holder] -->        <!-- Heading (center on mobile, left on desktop) --><!-- [et_pb_line_break_holder] -->        <h1<!--___noise___ 1149-->          id=&#8221;page-title&#8221;<!-- [et_pb_line_break_holder] -->          class=&#8221;text-3xl font-bold uppercase tracking-wide text-center md:text-left&#8221;<!-- [et_pb_line_break_holder] -->        ><\/h1><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <!-- Filter Bar (stacked on mobile, inline on desktop) --><!-- [et_pb_line_break_holder] -->        <div class=\"flex flex-col sm:flex-row items-center gap-2\"><!-- [et_pb_line_break_holder] -->          <!-- Producten Dropdown --><!-- [et_pb_line_break_holder] -->          <select<!--___noise___ 1139-->            id=&#8221;productenFilter&#8221;<!-- [et_pb_line_break_holder] -->            class=&#8221;border border-gray-300 rounded px-3 py-2 focus:outline-none&#8221;<!-- [et_pb_line_break_holder] -->          ><!-- [et_pb_line_break_holder] -->            <option value=\"\" id=\"productenDefaultOption\"><\/option><!-- [et_pb_line_break_holder] -->          <\/select><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Land Dropdown --><!-- [et_pb_line_break_holder] -->          <select<!--___noise___ 1130-->            id=&#8221;landFilter&#8221;<!-- [et_pb_line_break_holder] -->            class=&#8221;border border-gray-300 rounded px-3 py-2 focus:outline-none&#8221;<!-- [et_pb_line_break_holder] -->          ><!-- [et_pb_line_break_holder] -->            <option value=\"\" id=\"landDefaultOption\"><\/option><!-- [et_pb_line_break_holder] -->          <\/select><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Search Box --><!-- [et_pb_line_break_holder] -->          <input<!--___noise___ 1121-->            type=&#8221;text&#8221;<!-- [et_pb_line_break_holder] -->            id=&#8221;searchInput&#8221;<!-- [et_pb_line_break_holder] -->            class=&#8221;border border-gray-300 rounded px-3 py-2 focus:outline-none&#8221;<!-- [et_pb_line_break_holder] -->          \/><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Reset Button --><!-- [et_pb_line_break_holder] -->          <button<!--___noise___ 1113-->            id=&#8221;resetBtn&#8221;<!-- [et_pb_line_break_holder] -->            class=&#8221;border border-gray-300 rounded px-4 py-2 bg-gray-200 hover:bg-gray-300 text-sm font-medium transition-colors&#8221;<!-- [et_pb_line_break_holder] -->          ><!-- [et_pb_line_break_holder] -->          <\/button><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <!-- Projects Grid --><!-- [et_pb_line_break_holder] -->      <div<!--___noise___ 1103-->        id=&#8221;projectsContainer&#8221;<!-- [et_pb_line_break_holder] -->        class=&#8221;grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6&#8243;<!-- [et_pb_line_break_holder] -->      ><!-- [et_pb_line_break_holder] -->        <!-- Dynamically loaded project cards go here --><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->    <!-- (B) \"Modal\" \/ Project Detail --><!-- [et_pb_line_break_holder] -->    <!-- Initially hidden, in normal flow so the page grows if it's tall. --><!-- [et_pb_line_break_holder] -->    <div<!--___noise___ 1091-->      id=&#8221;myModal&#8221;<!-- [et_pb_line_break_holder] -->      class=&#8221;hidden w-full bg-white rounded-lg mt-8 px-4 py-6&#8243;<!-- [et_pb_line_break_holder] -->    ><!-- [et_pb_line_break_holder] -->      <!-- Close Button --><!-- [et_pb_line_break_holder] -->      <button<!--___noise___ 1085-->        id=&#8221;closeModalBtn&#8221;<!-- [et_pb_line_break_holder] -->        class=&#8221;bg-gray-200 hover:bg-gray-300 rounded px-3 py-1 text-lg transition-colors float-right&#8221;<!-- [et_pb_line_break_holder] -->        aria-label=&#8221;Close Modal&#8221;<!-- [et_pb_line_break_holder] -->      ><!-- [et_pb_line_break_holder] -->        Sluiten<!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <!-- LEFT + RIGHT WRAPPER for responsiveness --><!-- [et_pb_line_break_holder] -->      <div class=\"flex flex-col md:flex-row mt-2 md:mt-0\"><!-- [et_pb_line_break_holder] -->        <!-- LEFT COLUMN: Title, Country, Product, Descriptions --><!-- [et_pb_line_break_holder] -->        <div class=\"md:w-1\/2 md:pr-6 mb-6 md:mb-0\"><!-- [et_pb_line_break_holder] -->          <h2<!--___noise___ 1071-->            id=&#8221;modalTitle&#8221;<!-- [et_pb_line_break_holder] -->            class=&#8221;text-3xl font-bold mb-2 text-blue-600 tracking-wide&#8221;<!-- [et_pb_line_break_holder] -->          ><\/h2><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Land \/ Country --><!-- [et_pb_line_break_holder] -->          <pee class=\"text-gray-700 mb-1\"><!-- [et_pb_line_break_holder] -->            <strong id=\"modalLandLabel\"><\/strong><!-- [et_pb_line_break_holder] -->            <span id=\"modalLandValue\" class=\"ml-1\"><\/span><!-- [et_pb_line_break_holder] -->          <\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Producten \/ Products --><!-- [et_pb_line_break_holder] -->          <pee class=\"text-gray-700 mb-4\"><!-- [et_pb_line_break_holder] -->            <strong id=\"modalProductLabel\"><\/strong><!-- [et_pb_line_break_holder] -->            <span id=\"modalProductValue\" class=\"ml-1\"><\/span><!-- [et_pb_line_break_holder] -->          <\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Assignment & Description --><!-- [et_pb_line_break_holder] -->          <div class=\"mb-6\"><!-- [et_pb_line_break_holder] -->            <h3 id=\"modalAssignmentHeading\" class=\"text-lg font-semibold\"><\/h3><!-- [et_pb_line_break_holder] -->            <pee id=\"modalAssignment\" class=\"text-gray-700 italic\"><\/pee><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"mb-6\"><!-- [et_pb_line_break_holder] -->            <h3 id=\"modalDescriptionHeading\" class=\"text-lg font-semibold\"><\/h3><!-- [et_pb_line_break_holder] -->            <pee id=\"modalDescription\" class=\"text-gray-700\"><\/pee><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <!-- RIGHT COLUMN: Contact card + Images\/Thumbnails --><!-- [et_pb_line_break_holder] -->        <div class=\"md:w-1\/2 md:pl-6 flex flex-col items-center\"><!-- [et_pb_line_break_holder] -->          <!-- Centered contact card --><!-- [et_pb_line_break_holder] -->          <div id=\"modalContact\" class=\"mx-auto w-full mb-4\" style=\"max-width: 14rem;\"><!-- [et_pb_line_break_holder] -->            <!-- Contact card injected here via JS --><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Main Image --><!-- [et_pb_line_break_holder] -->          <div class=\"relative w-full flex justify-center overflow-hidden mb-4\"><!-- [et_pb_line_break_holder] -->            <img<!--___noise___ 1027-->              id=&#8221;modalMainImage&#8221;<!-- [et_pb_line_break_holder] -->              src=&#8221;&#8221;<!-- [et_pb_line_break_holder] -->              alt=&#8221;Main Image&#8221;<!-- [et_pb_line_break_holder] -->              class=&#8221;rounded shadow-md max-h-[500px] object-contain&#8221;<!-- [et_pb_line_break_holder] -->            \/><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          <!-- Thumbnails: 2 rows x 4 columns --><!-- [et_pb_line_break_holder] -->          <div<!--___noise___ 1017-->            id=&#8221;modalThumbnails&#8221;<!-- [et_pb_line_break_holder] -->            class=&#8221;grid grid-cols-4 grid-rows-2 gap-2 w-full&#8221;<!-- [et_pb_line_break_holder] -->          ><!-- [et_pb_line_break_holder] -->            <!-- Thumbnails injected via JS --><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- end main container --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <script><!-- [et_pb_line_break_holder] -->    \/\/ 0) Utility to check if we are on English page<!-- [et_pb_line_break_holder] -->    function isEnglishPage() {<!-- [et_pb_line_break_holder] -->      return window.location.pathname.includes('\/en\/');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 0.1) Provide text in both languages<!-- [et_pb_line_break_holder] -->    const textContent = {<!-- [et_pb_line_break_holder] -->      en: {<!-- [et_pb_line_break_holder] -->        pageTitle: 'Projects',<!-- [et_pb_line_break_holder] -->        productenDefault: 'Products',<!-- [et_pb_line_break_holder] -->        landDefault: 'Country',<!-- [et_pb_line_break_holder] -->        searchPlaceholder: 'Search projects...',<!-- [et_pb_line_break_holder] -->        resetButton: 'Reset',<!-- [et_pb_line_break_holder] -->        noProjectsFound: 'No projects found.',<!-- [et_pb_line_break_holder] -->        modalLandLabel: 'Country:',<!-- [et_pb_line_break_holder] -->        modalProductLabel: 'Products:',<!-- [et_pb_line_break_holder] -->        assignmentHeading: 'Assignment Description',<!-- [et_pb_line_break_holder] -->        descriptionHeading: 'Project Description'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      nl: {<!-- [et_pb_line_break_holder] -->        pageTitle: 'Projecten',<!-- [et_pb_line_break_holder] -->        productenDefault: 'Producten',<!-- [et_pb_line_break_holder] -->        landDefault: 'Land',<!-- [et_pb_line_break_holder] -->        searchPlaceholder: 'Zoeken naar projecten...',<!-- [et_pb_line_break_holder] -->        resetButton: 'Reset',<!-- [et_pb_line_break_holder] -->        noProjectsFound: 'Geen projecten gevonden.',<!-- [et_pb_line_break_holder] -->        modalLandLabel: 'Land:',<!-- [et_pb_line_break_holder] -->        modalProductLabel: 'Producten:',<!-- [et_pb_line_break_holder] -->        assignmentHeading: 'Opdracht omschrijving',<!-- [et_pb_line_break_holder] -->        descriptionHeading: 'Project Omschrijving'<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 0.2) Set the main UI text based on language<!-- [et_pb_line_break_holder] -->    function setLanguageContent() {<!-- [et_pb_line_break_holder] -->      const lang = isEnglishPage() ? 'en' : 'nl';<!-- [et_pb_line_break_holder] -->      const t = textContent[lang];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Page Title<!-- [et_pb_line_break_holder] -->      document.getElementById('page-title').textContent = t.pageTitle;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Filter placeholders<!-- [et_pb_line_break_holder] -->      document.getElementById('productenDefaultOption').textContent = t.productenDefault;<!-- [et_pb_line_break_holder] -->      document.getElementById('landDefaultOption').textContent = t.landDefault;<!-- [et_pb_line_break_holder] -->      document.getElementById('searchInput').placeholder = t.searchPlaceholder;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Reset button text<!-- [et_pb_line_break_holder] -->      document.getElementById('resetBtn').textContent = t.resetButton;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Modal labels<!-- [et_pb_line_break_holder] -->      document.getElementById('modalLandLabel').textContent = t.modalLandLabel;<!-- [et_pb_line_break_holder] -->      document.getElementById('modalProductLabel').textContent = t.modalProductLabel;<!-- [et_pb_line_break_holder] -->      document.getElementById('modalAssignmentHeading').textContent = t.assignmentHeading;<!-- [et_pb_line_break_holder] -->      document.getElementById('modalDescriptionHeading').textContent = t.descriptionHeading;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Global arrays for all projects and the filtered subset<!-- [et_pb_line_break_holder] -->    let projects = [];<!-- [et_pb_line_break_holder] -->    let filteredProjects = [];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ We'll keep track of currently displayed images and the index<!-- [et_pb_line_break_holder] -->    let displayedImages = [];<!-- [et_pb_line_break_holder] -->    let currentImageIndex = 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ DOM references<!-- [et_pb_line_break_holder] -->    const filtersAndProjects = document.getElementById('filtersAndProjects');<!-- [et_pb_line_break_holder] -->    const projectsContainer = document.getElementById('projectsContainer');<!-- [et_pb_line_break_holder] -->    const myModal = document.getElementById('myModal');<!-- [et_pb_line_break_holder] -->    const closeModalBtn = document.getElementById('closeModalBtn');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Modal elements<!-- [et_pb_line_break_holder] -->    const modalTitle = document.getElementById('modalTitle');<!-- [et_pb_line_break_holder] -->    const modalAssignment = document.getElementById('modalAssignment');<!-- [et_pb_line_break_holder] -->    const modalDescription = document.getElementById('modalDescription');<!-- [et_pb_line_break_holder] -->    const modalContact = document.getElementById('modalContact');<!-- [et_pb_line_break_holder] -->    const modalMainImage = document.getElementById('modalMainImage');<!-- [et_pb_line_break_holder] -->    const modalThumbnails = document.getElementById('modalThumbnails');<!-- [et_pb_line_break_holder] -->    const modalLandValue = document.getElementById('modalLandValue');<!-- [et_pb_line_break_holder] -->    const modalProductValue = document.getElementById('modalProductValue');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Filter elements<!-- [et_pb_line_break_holder] -->    const productenFilter = document.getElementById('productenFilter');<!-- [et_pb_line_break_holder] -->    const landFilter = document.getElementById('landFilter');<!-- [et_pb_line_break_holder] -->    const searchInput = document.getElementById('searchInput');<!-- [et_pb_line_break_holder] -->    const resetBtn = document.getElementById('resetBtn');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 1) Load projects with language param<!-- [et_pb_line_break_holder] -->    function loadProjects() {<!-- [et_pb_line_break_holder] -->      \/\/ Switch 'lang' param based on English or Dutch<!-- [et_pb_line_break_holder] -->      fetch(`https:\/\/es8.nl\/project\/projects.php?lang=${isEnglishPage() ? 'en' : 'nl'}`)<!-- [et_pb_line_break_holder] -->        .then((response) => response.json())<!-- [et_pb_line_break_holder] -->        .then((data) => {<!-- [et_pb_line_break_holder] -->          if (data.error) {<!-- [et_pb_line_break_holder] -->            console.error('Error from server:', data.error);<!-- [et_pb_line_break_holder] -->            projectsContainer.innerHTML = `<pee class=\"text-red-500\">${data.error}<\/pee>`;<!-- [et_pb_line_break_holder] -->            return;<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          projects = data.projects || [];<!-- [et_pb_line_break_holder] -->          populateFiltersFromProjects();<!-- [et_pb_line_break_holder] -->          filteredProjects = [...projects];<!-- [et_pb_line_break_holder] -->          renderProjects(filteredProjects);<!-- [et_pb_line_break_holder] -->        })<!-- [et_pb_line_break_holder] -->        .catch((err) => {<!-- [et_pb_line_break_holder] -->          console.error('Fetch error:', err);<!-- [et_pb_line_break_holder] -->          projectsContainer.innerHTML = `<pee class=\"text-red-500\">Error loading projects. Check console.<\/pee>`;<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 2) Build filter dropdowns with counts<!-- [et_pb_line_break_holder] -->    function populateFiltersFromProjects() {<!-- [et_pb_line_break_holder] -->      const productCount = {};<!-- [et_pb_line_break_holder] -->      const landCount = {};<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      projects.forEach((project) => {<!-- [et_pb_line_break_holder] -->        \/\/ Producten<!-- [et_pb_line_break_holder] -->        if (project.producten) {<!-- [et_pb_line_break_holder] -->          if (!productCount[project.producten]) {<!-- [et_pb_line_break_holder] -->            productCount[project.producten] = 0;<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          productCount[project.producten]++;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        \/\/ Land<!-- [et_pb_line_break_holder] -->        if (project.land) {<!-- [et_pb_line_break_holder] -->          if (!landCount[project.land]) {<!-- [et_pb_line_break_holder] -->            landCount[project.land] = 0;<!-- [et_pb_line_break_holder] -->          }<!-- [et_pb_line_break_holder] -->          landCount[project.land]++;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Sort them<!-- [et_pb_line_break_holder] -->      const sortedProducts = Object.keys(productCount).sort();<!-- [et_pb_line_break_holder] -->      const sortedLands = Object.keys(landCount).sort();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      populateDropdown(productenFilter, sortedProducts, productCount);<!-- [et_pb_line_break_holder] -->      populateDropdown(landFilter, sortedLands, landCount);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Helper: populate a dropdown with \"key (count)\"<!-- [et_pb_line_break_holder] -->    function populateDropdown(dropdownElement, keysArray, countObject) {<!-- [et_pb_line_break_holder] -->      \/\/ Remove existing dynamic options first, but leave the default <option><!-- [et_pb_line_break_holder] -->      while (dropdownElement.children.length > 1) {<!-- [et_pb_line_break_holder] -->        dropdownElement.removeChild(dropdownElement.lastChild);<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      \/\/ Then add new ones<!-- [et_pb_line_break_holder] -->      keysArray.forEach((key) => {<!-- [et_pb_line_break_holder] -->        const opt = document.createElement('option');<!-- [et_pb_line_break_holder] -->        opt.value = key;<!-- [et_pb_line_break_holder] -->        opt.textContent = `${key} (${countObject[key]})`;<!-- [et_pb_line_break_holder] -->        dropdownElement.appendChild(opt);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 3) Apply filters<!-- [et_pb_line_break_holder] -->    function applyFilters() {<!-- [et_pb_line_break_holder] -->      const selectedProduct = productenFilter.value.trim().toLowerCase();<!-- [et_pb_line_break_holder] -->      const selectedLand = landFilter.value.trim().toLowerCase();<!-- [et_pb_line_break_holder] -->      const searchTerm = searchInput.value.trim().toLowerCase();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      filteredProjects = projects.filter((project) => {<!-- [et_pb_line_break_holder] -->        let matches = true;<!-- [et_pb_line_break_holder] -->        const projectProduct = (project.producten || '').toLowerCase();<!-- [et_pb_line_break_holder] -->        const projectLand = (project.land || '').toLowerCase();<!-- [et_pb_line_break_holder] -->        const projectTitle = (project.title || '').toLowerCase();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (selectedProduct) {<!-- [et_pb_line_break_holder] -->          matches = matches && projectProduct === selectedProduct;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        if (selectedLand) {<!-- [et_pb_line_break_holder] -->          matches = matches && projectLand === selectedLand;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        if (searchTerm) {<!-- [et_pb_line_break_holder] -->          matches = matches && projectTitle.includes(searchTerm);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        return matches;<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      renderProjects(filteredProjects);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 4) Render the filtered projects<!-- [et_pb_line_break_holder] -->    function renderProjects(projectList) {<!-- [et_pb_line_break_holder] -->      projectsContainer.innerHTML = '';<!-- [et_pb_line_break_holder] -->      if (!projectList.length) {<!-- [et_pb_line_break_holder] -->        const lang = isEnglishPage() ? 'en' : 'nl';<!-- [et_pb_line_break_holder] -->        const noProjectsText = textContent[lang].noProjectsFound;<!-- [et_pb_line_break_holder] -->        projectsContainer.innerHTML = `<pee class=\"text-gray-500\">${noProjectsText}<\/pee>`;<!-- [et_pb_line_break_holder] -->        return;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      projectList.forEach((proj) => {<!-- [et_pb_line_break_holder] -->        let images = [];<!-- [et_pb_line_break_holder] -->        try {<!-- [et_pb_line_break_holder] -->          images = JSON.parse(proj.images) || [];<!-- [et_pb_line_break_holder] -->        } catch (err) {<!-- [et_pb_line_break_holder] -->          images = [];<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        const mainImage = images.length ? images[0] : 'placeholder.jpg';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const card = document.createElement('div');<!-- [et_pb_line_break_holder] -->        card.className = `<!-- [et_pb_line_break_holder] -->          bg-white p-4 rounded-lg shadow hover:shadow-md transition-shadow duration-300<!-- [et_pb_line_break_holder] -->          cursor-pointer<!-- [et_pb_line_break_holder] -->        `;<!-- [et_pb_line_break_holder] -->        card.innerHTML = `<!-- [et_pb_line_break_holder] -->          <img<!-- [et_pb_line_break_holder] -->            src=\"https:\/\/es8.nl\/project\/uploads\/${mainImage}\"<!-- [et_pb_line_break_holder] -->            alt=\"${proj.title || 'Project Image'}\"<!-- [et_pb_line_break_holder] -->            class=\"w-full h-48 object-cover rounded-md\"<!-- [et_pb_line_break_holder] -->          \/><!-- [et_pb_line_break_holder] -->          <h2 class=\"text-xl font-semibold mt-2 line-clamp-2\"><!-- [et_pb_line_break_holder] -->            ${proj.title || 'Untitled Project'}<!-- [et_pb_line_break_holder] -->          <\/h2><!-- [et_pb_line_break_holder] -->          <pee class=\"text-gray-700\"><!-- [et_pb_line_break_holder] -->            <strong>${proj.producten ? 'Producten:' : ''}<\/strong> ${proj.producten || '-'}<!-- [et_pb_line_break_holder] -->          <\/pee><!-- [et_pb_line_break_holder] -->          <pee class=\"text-gray-700\"><!-- [et_pb_line_break_holder] -->            <strong>${proj.land ? 'Land:' : ''}<\/strong> ${proj.land || '-'}<!-- [et_pb_line_break_holder] -->          <\/pee><!-- [et_pb_line_break_holder] -->        `;<!-- [et_pb_line_break_holder] -->        card.addEventListener('click', () => {<!-- [et_pb_line_break_holder] -->          showProjectModal(proj, images);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        projectsContainer.appendChild(card);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 5) Show project details in the \"modal\" section<!-- [et_pb_line_break_holder] -->    function showProjectModal(project, imagesArray) {<!-- [et_pb_line_break_holder] -->      \/\/ Fill text fields<!-- [et_pb_line_break_holder] -->      modalTitle.textContent = project.title || '';<!-- [et_pb_line_break_holder] -->      modalAssignment.textContent = project.assignment || '(Geen omschrijving)';<!-- [et_pb_line_break_holder] -->      modalDescription.textContent = project.description || '';<!-- [et_pb_line_break_holder] -->      modalLandValue.textContent = project.land || '-';<!-- [et_pb_line_break_holder] -->      modalProductValue.textContent = project.producten || '-';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Contact card<!-- [et_pb_line_break_holder] -->      modalContact.innerHTML = buildContactCard(project);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Store images for the modal<!-- [et_pb_line_break_holder] -->      displayedImages = imagesArray.length ? imagesArray : ['placeholder.jpg'];<!-- [et_pb_line_break_holder] -->      currentImageIndex = 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Show the initial main image<!-- [et_pb_line_break_holder] -->      modalMainImage.src = 'https:\/\/es8.nl\/project\/uploads\/' + displayedImages[currentImageIndex];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Thumbnails<!-- [et_pb_line_break_holder] -->      modalThumbnails.innerHTML = '';<!-- [et_pb_line_break_holder] -->      displayedImages.forEach((img, idx) => {<!-- [et_pb_line_break_holder] -->        const thumb = document.createElement('img');<!-- [et_pb_line_break_holder] -->        thumb.src = 'https:\/\/es8.nl\/project\/uploads\/' + img;<!-- [et_pb_line_break_holder] -->        thumb.classList.add(<!-- [et_pb_line_break_holder] -->          'h-20',<!-- [et_pb_line_break_holder] -->          'object-cover',<!-- [et_pb_line_break_holder] -->          'cursor-pointer',<!-- [et_pb_line_break_holder] -->          'rounded',<!-- [et_pb_line_break_holder] -->          'border',<!-- [et_pb_line_break_holder] -->          'border-gray-300'<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->        thumb.addEventListener('click', () => {<!-- [et_pb_line_break_holder] -->          currentImageIndex = idx;<!-- [et_pb_line_break_holder] -->          modalMainImage.src = 'https:\/\/es8.nl\/project\/uploads\/' + displayedImages[currentImageIndex];<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        modalThumbnails.appendChild(thumb);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Hide the filters + projects, show the detail<!-- [et_pb_line_break_holder] -->      filtersAndProjects.classList.add('hidden');<!-- [et_pb_line_break_holder] -->      myModal.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->      window.scrollTo({ top: 0, behavior: 'smooth' });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 6) Build contact card<!-- [et_pb_line_break_holder] -->    function buildContactCard(project) {<!-- [et_pb_line_break_holder] -->      const isEnglish = isEnglishPage();<!-- [et_pb_line_break_holder] -->      const contactFunctie = project.contact_functie || 'Functie';<!-- [et_pb_line_break_holder] -->      const contactOmschrijving = isEnglish<!-- [et_pb_line_break_holder] -->        ? project.contact_omschrijving_en<!-- [et_pb_line_break_holder] -->        : project.contact_omschrijving_nl;<!-- [et_pb_line_break_holder] -->      const contactImage = project.contact_image || 'default-profile.png';<!-- [et_pb_line_break_holder] -->      const contactName = project.contact_name || 'Naam';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ Fallback if no text is provided<!-- [et_pb_line_break_holder] -->      const fallbackText = isEnglish<!-- [et_pb_line_break_holder] -->        ? 'Short description (EN)'<!-- [et_pb_line_break_holder] -->        : 'Korte omschrijving (NL)';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      return `<!-- [et_pb_line_break_holder] -->        <div class=\"contact-card\"><!-- [et_pb_line_break_holder] -->          <img<!-- [et_pb_line_break_holder] -->            src=\"https:\/\/es8.nl\/project\/uploads\/${contactImage}\"<!-- [et_pb_line_break_holder] -->            alt=\"${contactName}\"<!-- [et_pb_line_break_holder] -->          \/><!-- [et_pb_line_break_holder] -->          <div class=\"p-3\"><!-- [et_pb_line_break_holder] -->            <h2 class=\"text-blue-600 text-lg font-bold\"><!-- [et_pb_line_break_holder] -->              ${contactName}<!-- [et_pb_line_break_holder] -->            <\/h2><!-- [et_pb_line_break_holder] -->            <pee class=\"text-red-500 font-medium mt-1 text-sm\"><!-- [et_pb_line_break_holder] -->              ${contactFunctie}<!-- [et_pb_line_break_holder] -->            <\/pee><!-- [et_pb_line_break_holder] -->            <pee class=\"text-gray-700 mt-2 text-xs\"><!-- [et_pb_line_break_holder] -->              ${contactOmschrijving || fallbackText}<!-- [et_pb_line_break_holder] -->            <\/pee><!-- [et_pb_line_break_holder] -->            <!-- LinkedIn Button --><!-- [et_pb_line_break_holder] -->            <a<!-- [et_pb_line_break_holder] -->              href=\"${project.contact_linkedin || '#'}\"<!-- [et_pb_line_break_holder] -->              target=\"_blank\"<!-- [et_pb_line_break_holder] -->              class=\"${<!-- [et_pb_line_break_holder] -->                  project.contact_linkedin<!-- [et_pb_line_break_holder] -->                      ? 'et_pb_linkedin_icon inline-block mt-3'<!-- [et_pb_line_break_holder] -->                      : 'hidden'<!-- [et_pb_line_break_holder] -->              }\"<!-- [et_pb_line_break_holder] -->            ><!-- [et_pb_line_break_holder] -->              in<!-- [et_pb_line_break_holder] -->            <\/a><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      `;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Hide the modal & show the projects\/filters again<!-- [et_pb_line_break_holder] -->    function hideModal() {<!-- [et_pb_line_break_holder] -->      myModal.classList.add('hidden');<!-- [et_pb_line_break_holder] -->      filtersAndProjects.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Close modal on clicking the close button<!-- [et_pb_line_break_holder] -->    closeModalBtn.addEventListener('click', hideModal);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ We removed the overlay approach since we want normal flow, so no overlay click needed.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 7) Filter events<!-- [et_pb_line_break_holder] -->    productenFilter.addEventListener('change', applyFilters);<!-- [et_pb_line_break_holder] -->    landFilter.addEventListener('change', applyFilters);<!-- [et_pb_line_break_holder] -->    searchInput.addEventListener('input', applyFilters);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Reset filters<!-- [et_pb_line_break_holder] -->    resetBtn.addEventListener('click', () => {<!-- [et_pb_line_break_holder] -->      productenFilter.value = '';<!-- [et_pb_line_break_holder] -->      landFilter.value = '';<!-- [et_pb_line_break_holder] -->      searchInput.value = '';<!-- [et_pb_line_break_holder] -->      filteredProjects = [...projects];<!-- [et_pb_line_break_holder] -->      renderProjects(filteredProjects);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ 8) On page load<!-- [et_pb_line_break_holder] -->    document.addEventListener('DOMContentLoaded', () => {<!-- [et_pb_line_break_holder] -->      setLanguageContent();<!-- [et_pb_line_break_holder] -->      loadProjects();<!-- [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_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]","protected":false},"excerpt":{"rendered":"<p>Projects id=&#8221;page-title&#8221; class=&#8221;text-3xl font-bold uppercase tracking-wide text-center md:text-left&#8221; id=&#8221;productenFilter&#8221; class=&#8221;border border-gray-300 rounded px-3 py-2 focus:outline-none&#8221; id=&#8221;landFilter&#8221; class=&#8221;border border-gray-300 rounded px-3 py-2 focus:outline-none&#8221; type=&#8221;text&#8221; id=&#8221;searchInput&#8221; class=&#8221;border border-gray-300 rounded px-3 py-2 focus:outline-none&#8221; \/ id=&#8221;resetBtn&#8221; class=&#8221;border border-gray-300 rounded px-4 py-2 bg-gray-200 hover:bg-gray-300 text-sm font-medium transition-colors&#8221; id=&#8221;projectsContainer&#8221; class=&#8221;grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6&#8243; id=&#8221;myModal&#8221; class=&#8221;hidden w-full bg-white rounded-lg mt-8 px-4 [&hellip;]<\/p>","protected":false},"author":1,"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-541","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/pages\/541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/comments?post=541"}],"version-history":[{"count":204,"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/pages\/541\/revisions"}],"predecessor-version":[{"id":2113,"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/pages\/541\/revisions\/2113"}],"wp:attachment":[{"href":"https:\/\/es8.nl\/en\/wp-json\/wp\/v2\/media?parent=541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}