{"id":701,"date":"2026-01-02T23:03:13","date_gmt":"2026-01-02T23:03:13","guid":{"rendered":"https:\/\/archivosociologiacritica.org\/?page_id=701"},"modified":"2026-02-13T12:17:45","modified_gmt":"2026-02-13T12:17:45","slug":"colectivo-ioe-biblioteca","status":"publish","type":"page","link":"https:\/\/archivosociologiacritica.org\/index.php\/colectivo-ioe-biblioteca\/","title":{"rendered":"Colectivo IOE Publicaciones"},"content":{"rendered":"\n<p>Puedes navegar directamente en la web y realizar filtros o b\u00fasquedas la funci\u00f3n de descargas est\u00e1 desactivada temporalmente, pues estamos terminando de editar la base de datos, perdona las molestias. <\/p>\n\n\n\nUn poco de paciencia, a veces puede tardar en cargar la base de datos \ud83d\ude42\n<!-- Librer\u00eda SheetJS para Excel con links -->\n<script src=\"https:\/\/cdn.sheetjs.com\/xlsx-latest\/package\/dist\/xlsx.full.min.js\"><\/script>\n\n<style>\n\/* ---------- EST\u00c9TICA GENERAL ---------- *\/\n#buscador-global, button {\n  padding: 6px 12px;\n  margin-bottom: 10px;\n  margin-right: 5px;\n  cursor: pointer;\n  border: 1px solid #D8B0C7;\n  border-radius: 4px;\n  background-color: #FDEEF2;\n  color: #8B2E4D;\n  font-weight: 500;\n}\n\n#buscador-global {\n  width: 100%;\n  box-sizing: border-box;\n}\n\n\/* ---------- BOTONES DESACTIVADOS ---------- *\/\nbutton.disabled-download {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n\/* ---------- TABLA ---------- *\/\n#tabla {\n  width: 100%;\n  border-collapse: collapse;\n  table-layout: fixed;\n}\n\n#tabla th, #tabla td {\n  border: 1px solid #D8B0C7;\n  padding: 6px 8px;\n  vertical-align: top;\n  text-align: left;\n  color: #333;\n}\n\n#tabla th {\n  background-color: #FDEEF2;\n  position: sticky;\n  top: 0;\n}\n\n.filter-select, .filter-input {\n  width: 100%;\n  margin-top: 4px;\n}\n\n.mark {\n  background-color: #FFE3EC;\n}\n\n#tabla a {\n  color: #333;\n  text-decoration: none;\n  border-bottom: 1px solid #F28EBF;\n}\n\n\/* ---------- FICHAS ---------- *\/\n#fichas {\n  display: none;\n  gap: 16px;\n}\n\n.ficha {\n  border: 1px solid #D8B0C7;\n  border-radius: 6px;\n  padding: 12px;\n  background: #FFF6FA;\n}\n\n.ficha h3 {\n  margin: 0 0 8px 0;\n  font-size: 16px;\n}\n\n.ficha .campo {\n  margin-bottom: 4px;\n  font-size: 14px;\n}\n\n.ficha .etiqueta {\n  font-weight: 600;\n  color: #8B2E4D;\n}\n<\/style>\n\n<input type=\"text\" id=\"buscador-global\" placeholder=\"Buscar en toda la tabla\u2026\">\n\n<button id=\"limpiar-filtros\">Limpiar filtros<\/button>\n<button id=\"vista-tabla\">Vista tabla<\/button>\n<button id=\"vista-ficha\">Vista ficha<\/button>\n<button id=\"descargar-excel\" class=\"disabled-download\">Descargar Excel completo<\/button>\n<button id=\"descargar-filtrado\" class=\"disabled-download\">Descargar Excel filtrado<\/button>\n\n<table id=\"tabla\">\n<thead>\n<tr>\n<th>ID<br><select class=\"filter-select\" data-col=\"0\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>A\u00f1o<br><select class=\"filter-select\" data-col=\"1\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>Coautores<br><input class=\"filter-input\" data-col=\"2\"><\/th>\n<th>T\u00edtulo<br><input class=\"filter-input\" data-col=\"3\"><\/th>\n<th>Edici\u00f3n<br><input class=\"filter-input\" data-col=\"4\"><\/th>\n<th>Accesibilidad<br><select class=\"filter-select\" data-col=\"5\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>Tipo publicaci\u00f3n<br><select class=\"filter-select\" data-col=\"6\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>Tipo cliente<br><select class=\"filter-select\" data-col=\"7\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>Cliente<br><select class=\"filter-select\" data-col=\"8\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>Tem\u00e1tica<br><select class=\"filter-select\" data-col=\"9\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<th>Metodolog\u00eda<br><select class=\"filter-select\" data-col=\"10\"><option value=\"todos\">Todos<\/option><\/select><\/th>\n<\/tr>\n<\/thead>\n<tbody><\/tbody>\n<\/table>\n\n<div id=\"fichas\"><\/div>\n\n<script>\nconst csvURL = \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vTQKrCefaa8tlg0N6JP_RCWr8T771Q1DSis7fVTuR8H7aTNuXcqNqXeM6b2-h0plphYWPzBGZjj2h5S\/pub?output=csv\";\n\nfetch(csvURL).then(r => r.text()).then(cargarCSV);\n\nfunction cargarCSV(csv){\n  const tbody = document.querySelector(\"#tabla tbody\");\n  const sets = Array(11).fill(0).map(() => new Set());\n\n  csv.split(\"\\n\").slice(1).forEach(l => {\n    if (!l.trim()) return;\n    const c = l.split(\/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)\/).map(x => x.replace(\/^\"|\"$\/g,\"\"));\n    const [id,a,co,t,e,ac,link,tp,tt,tm,tc,cl] = c;\n    const vals = [id,a,co,t,e,ac,tp,tc,cl,tt,tm];\n    const tr = document.createElement(\"tr\");\n\n    vals.forEach((v,i) => {\n      sets[i].add(v || \"\");\n      const td = document.createElement(\"td\");\n      if (i === 3 && link) {\n        td.innerHTML = `<a href=\"${link}\" target=\"_blank\">${v}<\/a>`;\n        td.dataset.link = link;\n      } else td.textContent = v || \"\";\n      tr.appendChild(td);\n    });\n    tbody.appendChild(tr);\n  });\n\n  document.querySelectorAll(\".filter-select\").forEach(s => {\n    [...sets[s.dataset.col]].sort().forEach(v => {\n      if (v) {\n        const o = document.createElement(\"option\");\n        o.value = v;\n        o.textContent = v;\n        s.appendChild(o);\n      }\n    });\n    s.addEventListener(\"change\", filtrar);\n  });\n\n  document.querySelectorAll(\".filter-input\").forEach(i => i.addEventListener(\"input\", filtrar));\n  document.getElementById(\"buscador-global\").addEventListener(\"input\", filtrar);\n\n  document.getElementById(\"limpiar-filtros\").onclick = () => {\n    document.querySelectorAll(\"input\").forEach(i => i.value = \"\");\n    document.querySelectorAll(\"select\").forEach(s => s.value = \"todos\");\n    filtrar();\n  };\n\n  renderFichas();\n}\n\nfunction filtrar(){\n  const g = document.getElementById(\"buscador-global\").value.toLowerCase();\n\n  document.querySelectorAll(\"#tabla tbody tr\").forEach(tr => {\n    let ok = true;\n\n    if (g && !tr.textContent.toLowerCase().includes(g)) ok = false;\n\n    document.querySelectorAll(\".filter-select\").forEach(s => {\n      if (s.value !== \"todos\" && tr.children[s.dataset.col].textContent !== s.value) ok = false;\n    });\n\n    document.querySelectorAll(\".filter-input\").forEach(i => {\n      if (i.value && !tr.children[i.dataset.col].textContent.toLowerCase().includes(i.value.toLowerCase())) ok = false;\n    });\n\n    tr.style.display = ok ? \"\" : \"none\";\n  });\n\n  renderFichas();\n}\n\nfunction renderFichas(){\n  const fichas = document.getElementById(\"fichas\");\n  fichas.innerHTML = \"\";\n\n  document.querySelectorAll(\"#tabla tbody tr\").forEach(tr => {\n    if (tr.style.display === \"none\") return;\n\n    const c = tr.children;\n    const link = c[3].querySelector(\"a\")?.href || \"\";\n\n    fichas.innerHTML += `\n      <div class=\"ficha\">\n        <h3>${link ? `<a href=\"${link}\" target=\"_blank\">${c[3].textContent}<\/a>` : c[3].textContent}<\/h3>\n        <div class=\"campo\"><span class=\"etiqueta\">A\u00f1o:<\/span> ${c[1].textContent}<\/div>\n        <div class=\"campo\"><span class=\"etiqueta\">Coautores:<\/span> ${c[2].textContent}<\/div>\n        <div class=\"campo\"><span class=\"etiqueta\">Edici\u00f3n:<\/span> ${c[4].textContent}<\/div>\n        <div class=\"campo\"><span class=\"etiqueta\">Accesibilidad:<\/span> ${c[5].textContent}<\/div>\n        <div class=\"campo\"><span class=\"etiqueta\">Tipo publicaci\u00f3n:<\/span> ${c[6].textContent}<\/div>\n        <div class=\"campo\"><span class=\"etiqueta\">Cliente:<\/span> ${c[8].textContent}<\/div>\n      <\/div>`;\n  });\n}\n\n\/* ---------- CAMBIO DE VISTAS ---------- *\/\ndocument.getElementById(\"vista-tabla\").onclick = () => {\n  tabla.style.display = \"\";\n  fichas.style.display = \"none\";\n};\n\ndocument.getElementById(\"vista-ficha\").onclick = () => {\n  renderFichas();\n  tabla.style.display = \"none\";\n  fichas.style.display = \"grid\";\n};\n\n\/* ---------- BLOQUEO TEMPORAL DE DESCARGAS ---------- *\/\nfunction bloquearDescarga(e){\n  e.preventDefault();\n  e.stopPropagation();\n  console.log(\"Descarga temporalmente desactivada\");\n  return false;\n}\n\ndocument.getElementById(\"descargar-excel\").addEventListener(\"click\", bloquearDescarga);\ndocument.getElementById(\"descargar-filtrado\").addEventListener(\"click\", bloquearDescarga);\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Puedes navegar directamente en la web y realizar filtros o b\u00fasquedas la funci\u00f3n de descargas est\u00e1 desactivada temporalmente, pues estamos terminando de editar la base de datos, perdona [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"iawp_total_views":50,"footnotes":""},"class_list":["post-701","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/pages\/701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/comments?post=701"}],"version-history":[{"count":45,"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/pages\/701\/revisions"}],"predecessor-version":[{"id":792,"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/pages\/701\/revisions\/792"}],"wp:attachment":[{"href":"https:\/\/archivosociologiacritica.org\/index.php\/wp-json\/wp\/v2\/media?parent=701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}