Hier der vollständige Code. Geändert ist nur resolveItemUrl(), dazu kommt die neue Hilfsfunktion languagePrefix(). Die Sprache wird aus dem URL-Präfix der Druckseite übernommen, z. B. /es/. html
(function () { function textOf(el) { return (el && el.textContent || "").replace(/\s+/g, " ").trim(); } // Sprachpräfix der aktuellen Seite ermitteln, z. B. "/es" bei /es/druckseite?item=123 // Standardsprache (ohne Präfix) liefert "". function languagePrefix() { var m = window.location.pathname.match(/^\/([a-z]{2})(?=\/|$)/i); return m ? "/" + m[1].toLowerCase() : ""; } function resolveItemUrl() { var match = window.location.search.match(/[?&]item=(\d+)/); if (!match) { return null; } return window.location.origin + languagePrefix() + "/a-" + match[1] + "/"; } function loadAccordion() { var url = resolveItemUrl(); if (!url) { return Promise.resolve(null); } return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.onload = function () { if (xhr.status < 200 || xhr.status >= 400) { reject(new Error("item page " + xhr.status)); return; } var doc = new DOMParser().parseFromString(xhr.responseText, "text/html"); resolve(doc.querySelector(".phywe-item-accordion")); }; xhr.onerror = function () { reject(new Error("item page network error")); }; xhr.send(); }); } function parseItemBlocks(scope, withQuantity) { if (!scope) { return []; } var rows = scope.querySelectorAll(".itemslist .row.itemblocks"); var items = []; for (var i = 0; i < rows.length; i++) { var cols = rows[i].children; if (!cols.length) { continue; } var nameLink = cols[0].querySelector("a"); var numberLink = cols[1] ? cols[1].querySelector("a") : null; var item = { name: textOf(nameLink || cols[0]), mappedTo: textOf(numberLink) }; if (withQuantity && cols[2]) { var qty = parseInt(textOf(cols[2]).replace(/[^\d]/g, ""), 10); item.quantity = isNaN(qty) ? textOf(cols[2]) : String(qty); } if (item.name) { items.push(item); } } return items; } function fillTable(tableId, items, withQuantity) { var table = document.getElementById(tableId); if (!table || !items.length) { return; } var tbody = table.querySelector("tbody"); for (var i = 0; i < items.length; i++) { var tr = document.createElement("tr"); var nameTd = document.createElement("td"); nameTd.style.width = "80%"; nameTd.textContent = items[i].name; tr.appendChild(nameTd); var numberTd = document.createElement("td"); numberTd.textContent = items[i].mappedTo; tr.appendChild(numberTd); if (withQuantity) { var qtyTd = document.createElement("td"); qtyTd.textContent = items[i].quantity || ""; tr.appendChild(qtyTd); } tbody.appendChild(tr); } var wrapper = table.parentElement; while (wrapper && wrapper.className.indexOf("printtablediv") === -1) { wrapper = wrapper.parentElement; } if (wrapper) { wrapper.style.display = ""; } } function stepTitle(stepEl) { if (!stepEl) { return ""; } var titleEl = stepEl.querySelector(".card-header button div") || stepEl.querySelector(".card-header button"); return textOf(titleEl); } function setHeadline(tableId, title) { var headline = document.querySelector("#" + tableId + " .printtableheadline"); if (headline && title) { headline.textContent = title; } } function parseMedia(scope) { if (!scope) { return []; } var rows = scope.querySelectorAll(".itemslist .row.itemblocks"); var items = []; for (var i = 0; i < rows.length; i++) { var cols = rows[i].children; if (!cols.length) { continue; } var nameLink = cols[0].querySelector("a"); var fileLink = cols[1] ? cols[1].querySelector("a") : null; var item = { name: textOf(nameLink || cols[0]), mappedTo: textOf(fileLink || cols[1]), quantity: cols[2] ? textOf(cols[2]) : "" }; if (item.name) { items.push(item); } } return items; } function fillFromAccordion(accordion) { if (!accordion) { return; } var versucheStep = accordion.querySelector('[data-step="versuche"]'); var versuche = parseItemBlocks(versucheStep, false); setHeadline("print-versuche", stepTitle(versucheStep)); fillTable("print-versuche", versuche, false); var lieferumfangStep = accordion.querySelector('[data-step="lieferumfang"]'); var lieferumfang = parseItemBlocks(lieferumfangStep, true); fillTable("print-lieferumfang", lieferumfang, true); var zubehoer = accordion.querySelector('[data-step="zubehoer"]'); var sections = zubehoer ? zubehoer.querySelectorAll(".card-body") : []; var notwendig = []; var empfohlen = []; for (var i = 0; i < sections.length; i++) { var items = parseItemBlocks(sections[i], false); if (sections[i].querySelector(".text-red, .icon-warning-black")) { notwendig = items; } else if (sections[i].querySelector(".text-green, .icon-Mehrwert_black")) { empfohlen = items; } } fillTable("print-zubehoer-notwendig", notwendig, false); fillTable("print-zubehoer-empfohlen", empfohlen, false); var mediaStep = accordion.querySelector('[data-step="media"]'); var media = parseMedia(mediaStep); setHeadline("print-media", stepTitle(mediaStep)); fillTable("print-media", media, true); } function start() { var itemUrl = resolveItemUrl(); if (!itemUrl) { setTimeout(function () { window.print(); }, 2000); return; } loadAccordion() .then(function (accordion) { fillFromAccordion(accordion); }) .catch(function (err) { if (window.console && console.warn) { console.warn("Accordion konnte nicht geladen werden:", itemUrl, err); } }) .then(function () { setTimeout(function () { window.print(); }, 500); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", start); } else { start(); } })();
 

Datos técnicos


Pelvis masculina (7 partes)

Nº de artículo 3BS-1013282

Funciones y uso

Este modelo de 7 partes de la pelvis masculina muestra con gran detalle cómo están conectados entre sí los huesos, los ligamentos, los vasos y los nervios, así como los músculos del suelo pélvico y los órganos sexuales externos. Muestra toda la pelvis, a través de la cual se ha colocado una sección mediana. El lado derecho del esfínter anal externo, el M. isquiocavernoso, el M. transversus perinei profundus y superficialis y el M. bulbospongiosus se pueden extirpar juntos.El recto, la vejiga, la próstata y el pene también se pueden extirpar y dividir en dos mitades a nivel de la mediana, parcialmente conectadas. Las estructuras óseas están conectadas con imanes y, por lo tanto, pueden separarse fácilmente. La piel y la fascia del pene se han extirpado parcialmente para que los vasos y los nervios sean visibles. También se ha retirado parte de la piel de la zona del escroto y del cordón espermático. También son visibles los testículos y el epidídimo. A la izquierda, el cordón espermático se ha abierto en capas, y a la derecha se han expuesto el M. cremaster y la fascia espermática interna.La mitad derecha de la pelvis muestra secciones de las arterias ilíacas comunes, externas e internas y las venas ilíacas comunes y externas, demostrando sus posiciones en relación con las demás. Se muestran el Plexus sacralis, el N. ischiadicus, el N. pudendus, el N. dorsalis penis, los Nn. scrotales anteriores, los Nn. perineales y los Nn. annales inferiores, así como el Ductus deferens. El modelo muestra los siguientes huesos y ligamentos: ambos huesos de la cadera, la sínfisis púbica, el sacro y el cóccix, así como la quinta vértebra lumbar con el disco intervertebral. Se ha colocado una sección mediana a través de la quinta vértebra lumbar, el sacro y el cóccix, de modo que la pelvis puede dividirse en dos mitades. Esto significa que parte de la cauda equina también es visible en el canal vertebral. La mitad izquierda de la quinta vértebra lumbar puede retirarse. Se muestran las siguientes estructuras ligamentosas de la pelvis

  • Lig. inguinale
  • Lig. sacrotuberal
  • Lig. sacroespinale
  • Lig. sacroiliaca anteriora
  • Lig. iliolumbale
  • Ligamento longitudinal anterior
  • Lig. Supraspinale, Lig. sacroiliacum interosseum
  • Lig. sacroiliacum posterius
  • Lig. sacrococcygeum laterale
  • Lig. sacrococcygeum posterius superficiale et profundum
  • Membrana obturatoria
  • Lig. lacunar


PHYWE Systeme GmbH & Co. KG
Robert-Bosch-Breite 10 – 37079 Göttingen – Deutschland
www.phywe.com
Contact