{"id":2230,"date":"2026-01-02T16:59:12","date_gmt":"2026-01-02T14:59:12","guid":{"rendered":"https:\/\/costabravaparcaventura.com\/horarios-platja-daro-y-pals\/"},"modified":"2026-07-03T07:28:02","modified_gmt":"2026-07-03T05:28:02","slug":"horarios-platja-daro-y-pals","status":"publish","type":"page","link":"https:\/\/costabravaparcaventura.com\/es\/horarios-platja-daro-y-pals\/","title":{"rendered":"Horarios Platja d&#8217;Aro y Pals"},"content":{"rendered":"\n<section class=\"calendaris-parc\">\n  <h2 id=\"calendaris-title\">Horaris dels parcs<\/h2>\n\n  <div id=\"llegenda-horaris\"><\/div>\n\n  <div class=\"calendari-box\">\n    <h3 id=\"title-pals\">Parc de Pals<\/h3>\n    <div id=\"calendari-pals\">Carregant calendari&#8230;<\/div>\n  <\/div>\n\n  <div class=\"calendari-box\">\n    <h3 id=\"title-platja\">Parc de Platja d&#8217;Aro<\/h3>\n    <div id=\"calendari-platja\">Carregant calendari&#8230;<\/div>\n  <\/div>\n<\/section>\n\n<script>\nconst csvDies = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vSZ1oXnPOoMZvPDNqatXnGYC_qgiIqNffFCR0jkucZ1EyR7LNDtF_8UVsd5Qd75IA\/pub?gid=2040568047&single=true&output=csv\";\nconst csvLlegenda = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vSZ1oXnPOoMZvPDNqatXnGYC_qgiIqNffFCR0jkucZ1EyR7LNDtF_8UVsd5Qd75IA\/pub?gid=1216367811&single=true&output=csv\";\n\nconst idioma = document.documentElement.lang || window.location.pathname.split(\"\/\")[1] || \"ca\";\n\nconst textos = {\n  ca: {\n    title: \"Horaris dels parcs\",\n    pals: \"Parc de Pals\",\n    platja: \"Parc de Platja d'Aro\",\n    loading: \"Carregant calendari...\",\n    noHora: \"Sense horari assignat\",\n    error: \"Error carregant calendaris\",\n    mesos: [\"Gener\",\"Febrer\",\"Mar\u00e7\",\"Abril\",\"Maig\",\"Juny\",\"Juliol\",\"Agost\",\"Setembre\",\"Octubre\",\"Novembre\",\"Desembre\"],\n    dies: [\"L\",\"M\",\"X\",\"J\",\"V\",\"S\",\"D\"]\n  },\n  es: {\n    title: \"Horarios de los parques\",\n    pals: \"Parque de Pals\",\n    platja: \"Parque de Platja d'Aro\",\n    loading: \"Cargando calendario...\",\n    noHora: \"Sin horario asignado\",\n    error: \"Error cargando calendarios\",\n    mesos: [\"Enero\",\"Febrero\",\"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"],\n    dies: [\"L\",\"M\",\"X\",\"J\",\"V\",\"S\",\"D\"]\n  },\n  en: {\n    title: \"Park opening times\",\n    pals: \"Pals Park\",\n    platja: \"Platja d'Aro Park\",\n    loading: \"Loading calendar...\",\n    noHora: \"No opening time assigned\",\n    error: \"Error loading calendars\",\n    mesos: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\n    dies: [\"M\",\"T\",\"W\",\"T\",\"F\",\"S\",\"S\"]\n  },\n  fr: {\n    title: \"Horaires des parcs\",\n    pals: \"Parc de Pals\",\n    platja: \"Parc de Platja d'Aro\",\n    loading: \"Chargement du calendrier...\",\n    noHora: \"Aucun horaire assign\u00e9\",\n    error: \"Erreur lors du chargement des calendriers\",\n    mesos: [\"Janvier\",\"F\u00e9vrier\",\"Mars\",\"Avril\",\"Mai\",\"Juin\",\"Juillet\",\"Ao\u00fbt\",\"Septembre\",\"Octobre\",\"Novembre\",\"D\u00e9cembre\"],\n    dies: [\"L\",\"M\",\"M\",\"J\",\"V\",\"S\",\"D\"]\n  }\n};\n\nconst langKey = idioma.startsWith(\"es\") ? \"es\" :\n                idioma.startsWith(\"en\") ? \"en\" :\n                idioma.startsWith(\"fr\") ? \"fr\" : \"ca\";\n\nconst t = textos[langKey];\n\ndocument.getElementById(\"calendaris-title\").textContent = t.title;\ndocument.getElementById(\"title-pals\").textContent = t.pals;\ndocument.getElementById(\"title-platja\").textContent = t.platja;\ndocument.getElementById(\"calendari-pals\").textContent = t.loading;\ndocument.getElementById(\"calendari-platja\").textContent = t.loading;\n\nfunction csvSimple(text) {\n  return text.trim().split(\/\\r?\\n\/).map(row =>\n    row.split(\",\").map(cell => cell.trim())\n  );\n}\n\nfunction normalitzarData(data) {\n  if (!data) return \"\";\n  if (data.includes(\"\/\")) {\n    const parts = data.split(\"\/\");\n    return parts[2] + \"-\" + parts[1].padStart(2, \"0\") + \"-\" + parts[0].padStart(2, \"0\");\n  }\n  return data;\n}\n\nfunction urlSenseCache(url) {\n  return url + \"&v=\" + new Date().getTime();\n}\n\nfunction renderAny(parcCSV, contenidorId, mapaDies, llegenda) {\n  let html = '<div class=\"calendaris-grid\">';\n\n  for (let m = 0; m < 12; m++) {\n    html += '<div class=\"mes-card\">';\n    html += '<div class=\"mes-titol\">' + t.mesos[m] + '<\/div>';\n\n    html += '<div class=\"dies-setmana\">';\n    t.dies.forEach(d => html += '<span>' + d + '<\/span>');\n    html += '<\/div>';\n\n    html += '<div class=\"dies-mes\">';\n\n    let primer = new Date(2026, m, 1).getDay();\n    primer = primer === 0 ? 6 : primer - 1;\n\n    for (let i = 0; i < primer; i++) {\n      html += '<span class=\"dia-buit\"><\/span>';\n    }\n\n    const totalDies = new Date(2026, m + 1, 0).getDate();\n\n    for (let d = 1; d <= totalDies; d++) {\n      const data = '2026-' + String(m + 1).padStart(2, \"0\") + '-' + String(d).padStart(2, \"0\");\n      const clau = data + '_' + parcCSV;\n      const tipus = mapaDies[clau] || \"\";\n      const color = llegenda[tipus] ? llegenda[tipus].color : \"#222\";\n      const horari = llegenda[tipus] ? llegenda[tipus].text : t.noHora;\n\n      html += '<span class=\"dia-calendari\" style=\"background:' + color + ';\" title=\"' + horari + '\">' + d + '<\/span>';\n    }\n\n    html += '<\/div><\/div>';\n  }\n\n  html += '<\/div>';\n  document.getElementById(contenidorId).innerHTML = html;\n}\n\nasync function iniciar() {\n  try {\n    const diesText = await fetch(urlSenseCache(csvDies)).then(r => r.text());\n    const llegendaText = await fetch(urlSenseCache(csvLlegenda)).then(r => r.text());\n\n    const dies = csvSimple(diesText);\n    const llegendaFiles = csvSimple(llegendaText);\n\n    const mapaDies = {};\n    dies.slice(1).forEach(fila => {\n      const data = normalitzarData(fila[0]);\n      const parc = fila[1];\n      const tipus = fila[2];\n\n      if (data && parc) {\n        mapaDies[data + '_' + parc] = tipus;\n      }\n    });\n\n    const llegenda = {};\n    let llegendaHtml = '<div class=\"llegenda-grid\">';\n\n    llegendaFiles.slice(1).forEach(fila => {\n      const tipus = fila[0];\n      const color = fila[1];\n      const text = fila.slice(2).join(\",\");\n\n      if (tipus && color) {\n        llegenda[tipus] = { color, text };\n        llegendaHtml += '<div class=\"llegenda-item\"><span style=\"background:' + color + ';\"><\/span><p>' + text + '<\/p><\/div>';\n      }\n    });\n\n    llegendaHtml += '<\/div>';\n    document.getElementById(\"llegenda-horaris\").innerHTML = llegendaHtml;\n\n    renderAny(\"Pals\", \"calendari-pals\", mapaDies, llegenda);\n    renderAny(\"Platja d'Aro\", \"calendari-platja\", mapaDies, llegenda);\n\n  } catch (error) {\n    document.getElementById(\"llegenda-horaris\").innerHTML = '<p style=\"color:red;\">' + t.error + '<\/p>';\n    console.error(error);\n  }\n}\n\niniciar();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Horaris dels parcs Parc de Pals Carregant calendari&#8230; Parc de Platja d&#8217;Aro Carregant calendari&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2230","page","type-page","status-publish","hentry"],"blocksy_meta":[],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/pages\/2230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/comments?post=2230"}],"version-history":[{"count":2,"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/pages\/2230\/revisions"}],"predecessor-version":[{"id":2290,"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/pages\/2230\/revisions\/2290"}],"wp:attachment":[{"href":"https:\/\/costabravaparcaventura.com\/es\/wp-json\/wp\/v2\/media?parent=2230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}