diff --git a/Actividades_Manual_Vantive.xlsx b/Actividades_Manual_Vantive.xlsx index 7d5ef91..3ddfbaf 100644 Binary files a/Actividades_Manual_Vantive.xlsx and b/Actividades_Manual_Vantive.xlsx differ diff --git a/contenido/01.html b/contenido/01.html index c8cb459..f4d5ed7 100644 --- a/contenido/01.html +++ b/contenido/01.html @@ -16,9 +16,9 @@
-
+
-

Guía de entrenamiento para el paciente en Diálisis Peritoneal GUÍA DE ENTRENAMIENTO PARA EL PACIENTE EN DIÁLISIS PERITONEAL >>>


diff --git a/contenido/04.html b/contenido/04.html index 1391ca0..cad98f9 100644 --- a/contenido/04.html +++ b/contenido/04.html @@ -64,7 +64,7 @@
-

A la secuencia de pasos que incluye al drenaje, permanencia e infusión se le conoce como: recambio +

A la secuencia de pasos que incluye al drenaje, permanencia e infusión se le conoce como: recambio.

diff --git a/contenido/05.html b/contenido/05.html index ca275bb..55add94 100644 --- a/contenido/05.html +++ b/contenido/05.html @@ -539,6 +539,7 @@ CourseNav.audioController.stopAllSoundsAndPlay(isCorrect ? good : bad); $(this).html(draggedItem.find('.col-12').text()).addClass('text-center d-flex align-items-center justify-content-center'); + $(this).droppable('disable'); // Disable this drop zone draggedItem.hide(); if (isCorrect) { diff --git a/contenido/06.html b/contenido/06.html index b813f43..e728e02 100644 --- a/contenido/06.html +++ b/contenido/06.html @@ -143,7 +143,7 @@
-

Vivir con enfermedad renal

+

Acceso peritoneal y sus cuidados


diff --git a/contenido/07.html b/contenido/07.html index 1f0a546..0cf7e3e 100644 --- a/contenido/07.html +++ b/contenido/07.html @@ -64,8 +64,7 @@

La línea de transferencia y el catéter deben mantenerse alejados de gérmenes que ponen en riesgo su salud y vida.

-

Por eso se utiliza una técnica aséptica para la manipulación de su acceso peritoneal, ya sea para - realizar un recambio, explorar su orificio de salida o procedimientos realizados por el personal de salud.

+

Por eso, se utiliza una técnica aséptica para la manipulación de su acceso peritoneal, ya sea para realizar un recambio, explorar su orificio de salida o en procedimientos realizados por el personal de salud.

@@ -335,47 +334,17 @@ } }); CourseNav.audioController.stopAllSoundsAndPlay(feedbackcorrect); - - Swal.fire({ - target: document.getElementById('wrap-course-content'), - imageUrl: 'img/good.png', - showConfirmButton: true, - customClass: { - popup: 'pop_retros bg-transparent border-0 rounded-0 shadow-none', - confirmButton: 'btn text-primary bg-lila-rosa amor fw-semibold animate__animated animate__pulse animate__infinite' - }, - confirmButtonText: "Cerrar", - backdrop: "rgba(65, 60, 60, .95)", - width: "35em", - didClose: () => { - flippedCards = []; - checkGameCompletion(); - } - }); + flippedCards = []; + checkGameCompletion(); } else { CourseNav.audioController.stopAllSoundsAndPlay(feedbackincorrect); - - Swal.fire({ - target: document.getElementById('wrap-course-content'), - imageUrl: 'img/bad.png', - showConfirmButton: true, - customClass: { - popup: 'pop_retros bg-transparent border-0 rounded-0 shadow-none', - confirmButton: 'btn text-primary bg-lila-rosa amor fw-semibold animate__animated animate__pulse animate__infinite' - }, - confirmButtonText: "Cerrar", - backdrop: "rgba(65, 60, 60, .95)", - width: "35em", - didClose: () => { - // Las tarjetas no coinciden, voltearlas de nuevo después de un breve retraso - setTimeout(() => { - firstCard.flip(false); - secondCard.flip(false); - flippedCards = []; - lastFlippedRow = ""; // Reiniciar el rastreo de fila - }, 200); - } - }); + // Las tarjetas no coinciden, voltearlas de nuevo después de un breve retraso + setTimeout(() => { + firstCard.flip(false); + secondCard.flip(false); + flippedCards = []; + lastFlippedRow = ""; // Reiniciar el rastreo de fila + }, 1200); } } } diff --git a/contenido/08.html b/contenido/08.html index f11751c..9c8ddee 100644 --- a/contenido/08.html +++ b/contenido/08.html @@ -72,7 +72,7 @@
-

Para un recambio seguro bajo ningún motivo debe tocar las zonas estériles (libres de gérmenes) en el sistema de DP.

+

Para un recambio seguro, bajo ningún motivo debe tocar las zonas estériles (libres de gérmenes) en el sistema de DP.

-

El lavado de manos también es un paso fundamental en el proceso de diálisis peritoneal.

+

El lavado de manos también es una fase fundamental en el proceso de diálisis peritoneal.

diff --git a/contenido/12.html b/contenido/12.html index 73b65f0..95b6f21 100644 --- a/contenido/12.html +++ b/contenido/12.html @@ -177,9 +177,7 @@
-

Instrucciones: De clic en la ruleta y conteste correctamente la pregunta acerca - de la alimentación o actividad física del paciente en - diálisis peritoneal para ganar los puntos.

+

Instrucciones: Gire la ruleta y conteste correctamente la pregunta acerca de la alimentación o actividad física del paciente en diálisis peritoneal para ganar los puntos.

@@ -388,7 +386,9 @@ function mostrarPregunta(puntajeEnJuego) { if (questions.length === 0) return; - const preguntaAleatoria = questions[Math.floor(Math.random() * questions.length)]; + const indiceAleatorio = Math.floor(Math.random() * questions.length); + const preguntaAleatoria = questions[indiceAleatorio]; + questions.splice(indiceAleatorio, 1); // Eliminar la pregunta usada const opcionesBarajadas = shuffleArray([...preguntaAleatoria.opciones]); let opcionesHTML = ''; @@ -491,8 +491,9 @@ } function finalizarJuego() { - const porcentaje = (totalPuntos / (7 * 700)) * 100; - const aprobado = porcentaje >= 60; + const puntajeMaximo = 7 * 700; // 7 giros × 700 puntos máximos + const porcentaje = (totalPuntos / puntajeMaximo) * 100; + const aprobado = porcentaje >= 80; $('.wrap-course-content').addClass('fake2').removeClass('fake1'); diff --git a/contenido/13.html b/contenido/13.html index de22d67..dfbb413 100644 --- a/contenido/13.html +++ b/contenido/13.html @@ -94,8 +94,8 @@
-

Como se ha visto, la enfermedad crónica de los riñones causa signos y síntomas que en parte, son controlados mediante - la DP, sin embargo, es necesario el apoyo de medicamentos que solo su médico puede y debe prescribir.

+

Como se ha visto, la enfermedad crónica de los riñones causa signos y síntomas que, en parte, son controlados mediante + la DP, sin embargo, es necesario el apoyo de medicamentos que solo su médico puede y debe prescribir.

diff --git a/contenido/15.html b/contenido/15.html index f5a0719..99817e9 100644 --- a/contenido/15.html +++ b/contenido/15.html @@ -175,7 +175,7 @@
-

Instrucciones: De clic en cada una de las salas y conteste la pregunta sobre cómo atender la incidencia para ganar los puntos.

+

Instrucciones: Dé clic en cada una de las salas y conteste la pregunta sobre cómo atender la incidencia para ganar los puntos.

diff --git a/contenido/16.html b/contenido/16.html index 383994b..7b82a32 100644 --- a/contenido/16.html +++ b/contenido/16.html @@ -188,9 +188,9 @@
- +
+

DPA

+

Existen dos modalidades de Diálisis Peritoneal: la @@ -202,7 +202,7 @@

En la siguiente actividad podrá poner a prueba sus conocimientos sobre los procedimientos de conexión y desconexión de la DPA.

-
+
COMENZAR ACTIVIDAD
diff --git a/contenido/17.html b/contenido/17.html index 81bfd36..67f2614 100644 --- a/contenido/17.html +++ b/contenido/17.html @@ -191,9 +191,7 @@
-

Instrucciones: Lea con atención cada - descripción y arrástrela hacia el sobre con el nombre del paso al - que corresponde. +

Instrucciones: Lea con atención cada descripción y arrastre hacia ella el sobre con el nombre del paso al que corresponde.

diff --git a/contenido/18.html b/contenido/18.html index ec54991..c9bf7a0 100644 --- a/contenido/18.html +++ b/contenido/18.html @@ -292,7 +292,9 @@ if (questions.length === 0) return; const QuestionPop = false; - const preguntaAleatoria = questions[Math.floor(Math.random() * questions.length)]; + const indiceAleatorio = Math.floor(Math.random() * questions.length); + const preguntaAleatoria = questions[indiceAleatorio]; + questions.splice(indiceAleatorio, 1); // Eliminar la pregunta usada const opcionesBarajadas = shuffleArray([...preguntaAleatoria.opciones]); let opcionesHTML = ''; diff --git a/css/style.scss b/css/style.scss index c16e60f..4520638 100644 --- a/css/style.scss +++ b/css/style.scss @@ -110,7 +110,7 @@ body { } &[data-coursenavvisited='false'] { &::before { - content: '\f023'; // unicode de fa-check + content: '\f023'; // unicode de fa-lock font-family: 'Font Awesome 6 Pro'; font-weight: lighter; // solid display: inline-block; diff --git a/img/10.0.png b/img/10.0.png index dd7d4a9..a9251f8 100644 Binary files a/img/10.0.png and b/img/10.0.png differ diff --git a/img/16.10.png b/img/16.10.png index 6e00753..43b5b95 100644 Binary files a/img/16.10.png and b/img/16.10.png differ diff --git a/img/16.11.png b/img/16.11.png index e1965ac..c08c797 100644 Binary files a/img/16.11.png and b/img/16.11.png differ diff --git a/img/16.12.png b/img/16.12.png index d3ca255..5f2bdd9 100644 Binary files a/img/16.12.png and b/img/16.12.png differ diff --git a/img/16.13.png b/img/16.13.png index b4699cc..15d3488 100644 Binary files a/img/16.13.png and b/img/16.13.png differ diff --git a/img/16.4.png b/img/16.4.png index 70c06a6..62e90a0 100644 Binary files a/img/16.4.png and b/img/16.4.png differ diff --git a/img/16.5.png b/img/16.5.png index 743e50a..53947d4 100644 Binary files a/img/16.5.png and b/img/16.5.png differ diff --git a/img/16.6.png b/img/16.6.png index a135a7b..e974979 100644 Binary files a/img/16.6.png and b/img/16.6.png differ diff --git a/img/16.7.png b/img/16.7.png index c026465..cd07370 100644 Binary files a/img/16.7.png and b/img/16.7.png differ diff --git a/img/16.8.png b/img/16.8.png index dc0666c..82a7cca 100644 Binary files a/img/16.8.png and b/img/16.8.png differ diff --git a/img/16.9.png b/img/16.9.png index 56d8f3a..1f18e00 100644 Binary files a/img/16.9.png and b/img/16.9.png differ diff --git a/js/coursenav.js b/js/coursenav.js index 13a93d2..437009c 100644 --- a/js/coursenav.js +++ b/js/coursenav.js @@ -361,21 +361,17 @@ var CourseNav = (function (COURSE_CONFIG) { const idx = courseData.contentArray.findIndex((c) => c.content === item.content && c.title === item.title); link.dataset.coursenavindex = idx; - link.dataset.coursenavvisited = idx >= 0 && courseData.contentArray[idx].visited; + link.dataset.coursenavvisited = true; wdiv.appendChild(link); link.addEventListener("click", () => { CLICK_SOUND.play(); const index = parseInt(link.dataset.coursenavindex, 10); if (index >= 0) { - if (DEBUG || courseData.contentArray[index].visited) { - currentIndex = index; - closeSidebar(); - loadContent(); - } else { - closeSidebar(); - showLockedContentWarning(); - } + // Permitir navegación libre desde el menú + currentIndex = index; + closeSidebar(); + loadContent(); } else { const toggle = wdiv.querySelector(".toggle-icon"); toggle && toggle.click(); @@ -504,8 +500,8 @@ var CourseNav = (function (COURSE_CONFIG) { const idx = parseInt(link.dataset.coursenavindex, 10); const item = courseData.contentArray[idx]; if (item) { - link.dataset.coursenavvisited = item.visited; - item.visited ? link.classList.add("visited") : link.classList.remove("visited"); + link.dataset.coursenavvisited = true; + link.classList.add("visited"); } }); } diff --git a/js/coursenav.min.js b/js/coursenav.min.js index fd7085d..3b5ccb8 100644 --- a/js/coursenav.min.js +++ b/js/coursenav.min.js @@ -1 +1 @@ -var CourseNav=function(e){"use strict";new Set;class t extends Howl{constructor(e){super(e),this._timeupdateListeners=[],this._interval=null,this._startTimeUpdate()}_startTimeUpdate(){this._interval=setInterval((()=>{this.playing()&&this._emitTimeUpdate(this.seek())}),250)}_emitTimeUpdate(e){this._timeupdateListeners.forEach((t=>t(e)))}onTimeUpdate(e){this._timeupdateListeners.push(e)}offTimeUpdate(e){this._timeupdateListeners=this._timeupdateListeners.filter((t=>t!==e))}play(e){const t=super.play(e);return this._interval||this._startTimeUpdate(),t}pause(e){const t=super.pause(e);return clearInterval(this._interval),this._interval=null,t}stop(e){super.stop(e),clearInterval(this._interval),this._interval=null}}function n(e){return e?new t({src:[e]}):null}const o=new class{constructor(){this.audioElement=null,this.audioControlButton=document.getElementById("coursenav-audio-control"),this.audioIcon=document.getElementById("coursenav-audio-icon"),this.progressCircle=document.getElementById("coursenav-progress-circle"),this.isMuted=!1,this.progressCircle&&(this.progressCircle.style.display="none"),this.audioControlButton&&this.audioControlButton.addEventListener("click",this.toggleAudio.bind(this))}stopAllSoundsAndPlay(e){Howler._howls?.forEach((e=>e.stop())),this.setAudio(e),this.playAudio()}loadAudio(e){this.audioElement&&this.audioElement.stop(),e&&(this.audioElement=n(e),this._bindAudioEvents())}playAudio(){this.audioElement?.play()}pauseAudio(){this.audioElement?.pause()}stopAudio(){this.audioElement?.stop()}toggleAudio(){this.audioElement&&(this.audioElement.playing()?this.pauseAudio():this.playAudio())}toggleMute(){this.isMuted=!this.isMuted,Howler.mute(this.isMuted),this.updateIcon(),document.querySelectorAll("video").forEach((e=>e.muted=this.isMuted))}onPlay(){this.progressCircle&&(this.progressCircle.style.display="block");const e=this.audioElement.seek();this.updateProgressCircle(e),this.updateIcon()}onEnd(){this.progressCircle&&(this.progressCircle.style.display="none"),this.updateIcon()}updateIcon(){if(!this.audioIcon)return;const e=this.audioElement?.playing();this.audioIcon.className=e?"fa-duotone fa-solid fa-pause":"fa-duotone fa-solid fa-play"}updateProgressCircle(e){if(!this.progressCircle||!this.audioElement)return;const t=parseFloat(this.progressCircle.getAttribute("r")),n=2*Math.PI*t,o=n-e/this.audioElement.duration()*n;this.progressCircle.setAttribute("stroke-dashoffset",o)}setAudioUrl(e){this.loadAudio(e)}setAudio(e){e instanceof t&&(this.audioElement?.stop(),this.audioElement=e,this._bindAudioEvents())}_bindAudioEvents(){this.audioElement.on("play",this.onPlay.bind(this)),this.audioElement.on("pause",this.updateIcon.bind(this)),this.audioElement.on("stop",this.updateIcon.bind(this)),this.audioElement.on("end",this.onEnd.bind(this)),this.audioElement.onTimeUpdate(this.updateProgressCircle.bind(this))}},s=e.COURSE_CONFIG_URL||"config.json",i=e.DEBUG||!1,r=(e.KEY,document.getElementById("coursenav-main-content")),a=document.getElementById("wrap-course-content");a.setAttribute("data-original-class",a.className);const c=document.getElementById("coursenav-loader-course"),d=new Audio("audio/click.mp3"),l=document.getElementById("coursenav-prev-btn"),u=document.getElementById("coursenav-next-btn"),p=document.getElementById("coursenav-progress-bar"),m=document.getElementById("coursenav-main-menu");let h;pipwerks.SCORM.version="1.2",pipwerks.debug.isActive=i,pipwerks.SCORM.handleExitMode=!1;let f=!1,g=null,v={contentArray:[],maximumAdvance:0},y=0;function A(e,t="",n="",o=null){e.forEach((e=>{const s=!o&&!n?e.title:n;e.content&&v.contentArray.push({title:e.title,content:e.content,audio:e.audio,visited:!1,courseTitle:t,moduleTitle:s,parentTitle:o}),e.topics&&A(e.topics,t,s,e.title)}))}function C(){const e=new XMLHttpRequest;e.open("GET",`${s}?_=${Date.now()}`,!0),e.setRequestHeader("X-Requested-With","XMLHttpRequest"),e.withCredentials=!0,e.responseType="json",e.onload=function(){if(e.status>=200&&e.status<300){g=e.response,v={contentArray:[],maximumAdvance:0},g.title&&(document.title=g.title),A(g.modules,g.title||"");const t=T()||{contentArray:[],maximumAdvance:0};t.contentArray&&function(e,t){return!(!e||!t||e.length!==t.length)&&e.every(((e,n)=>e.title===t[n].title&&e.content===t[n].content))}(t.contentArray,v.contentArray)&&(v=t),v.maximumAdvance>0?"undefined"==typeof Swal?(y=confirm("¿Retomar tu progreso?")?v.maximumAdvance:0,S()):Swal.fire({title:"¿Dónde quieres empezar?",text:"Retomar o comenzar de nuevo",icon:"question",showCancelButton:!0,confirmButtonText:"Retomar",cancelButtonText:"Comenzar",target:r,customClass:{confirmButton:"btn btn-primary",cancelButton:"btn btn-secondary"}}).then((e=>{y=e.isConfirmed?v.maximumAdvance:0,S()})):S(),q(v)}else r?.remove()},e.onerror=function(){r?.remove()},e.send()}function S(){m&&(m.innerHTML="",(g.modules||[]).forEach((e=>{const t=document.createElement("ul");t.classList.add("course-menu"),t.appendChild(w(e)),m.appendChild(t)})),E(),E()),v.contentArray.length>0?k():r.innerHTML="
No hay contenido.
",l?.addEventListener("click",(()=>{d.play(),L(-1)})),u?.addEventListener("click",(()=>{d.play(),L(1)})),O()}function w(e){const t=document.createElement("li");t.classList.add("menu-item");const n=document.createElement("div");n.classList.add("witem"),t.appendChild(n);const o=document.createElement("a");o.classList.add("coursenav-link"),o.textContent=e.title;const s=v.contentArray.findIndex((t=>t.content===e.content&&t.title===e.title));if(o.dataset.coursenavindex=s,o.dataset.coursenavvisited=s>=0&&v.contentArray[s].visited,n.appendChild(o),o.addEventListener("click",(()=>{d.play();const e=parseInt(o.dataset.coursenavindex,10);if(e>=0)i||v.contentArray[e].visited?(y=e,M(),k()):(M(),b());else{const e=n.querySelector(".toggle-icon");e&&e.click()}})),e.topics?.length){const o=document.createElement("span");o.classList.add("toggle-icon"),o.innerHTML='',n.appendChild(o);const s=document.createElement("ul");s.classList.add("sub-ul","open"),e.topics.forEach((e=>s.appendChild(w(e)))),t.appendChild(s),o.addEventListener("click",(()=>{d.play();const e=s.classList.toggle("open"),t=o.querySelector("i");t.classList.toggle("fa-square-chevron-down",e),t.classList.toggle("fa-square-chevron-right",!e)}))}return t}function E(){document.querySelectorAll("#coursenav-main-menu > ul.course-menu").forEach((function e(t){const n=new Set;Array.from(t.children).filter((e=>"LI"===e.tagName)).forEach((t=>{const o=t.querySelector(":scope > .witem > .coursenav-link");if(o){const e=o.textContent.trim();n.has(e)?t.style.display="none":n.add(e)}t.querySelectorAll(":scope > ul").forEach(e)}))}))}function M(){const e=document.getElementById("coursenav-offcanvas");(bootstrap.Offcanvas.getInstance(e)||new bootstrap.Offcanvas(e)).hide()}function b(){"undefined"==typeof Swal?alert("Debes completar el contenido actual antes de avanzar."):Swal.fire({text:"Debes completar el contenido actual antes de avanzar.",icon:"warning",target:r,customClass:{confirmButton:"btn btn-primary",cancelButton:"btn btn-warning"}})}function k(){r.innerHTML="",a.className=a.getAttribute("data-original-class"),window.scrollTo(0,0),c.style.display="block";const e=v.contentArray[y];e?.content&&(o.stopAudio(),Howler._howls?.forEach((e=>e.stop())),Swal.isVisible()&&Swal.close(),document.documentElement.classList.remove("swal2-shown","swal2-height-auto"),document.body.classList.remove("swal2-shown","swal2-height-auto"),document.documentElement.removeAttribute("aria-hidden"),document.body.removeAttribute("aria-hidden"),document.querySelectorAll("script[aria-hidden]").forEach((e=>e.removeAttribute("aria-hidden"))),fetch(e.content,{cache:"no-store"}).then((e=>{if(!e.ok)throw new Error(e.statusText);return e.text()})).then((e=>{$(r).html(e)})).catch((e=>{r.innerHTML=`
${e.message}
`})).finally((()=>{v.maximumAdvance=Math.max(v.maximumAdvance,y),c.style.display="none",I(),function(e,t){document.body.dispatchEvent(new CustomEvent("slideChange",{detail:{message:"Slide changed!",slideIndex:e,contentArray:t}}))}(y,v.contentArray)})))}function I(){q(v),O(),R(),document.querySelectorAll(".coursenav-link").forEach((e=>{const t=parseInt(e.dataset.coursenavindex,10),n=v.contentArray[t];n&&(e.dataset.coursenavvisited=n.visited,n.visited?e.classList.add("visited"):e.classList.remove("visited"))}))}function L(e){!function(e,t){document.body.dispatchEvent(new CustomEvent("beforeSlideChange",{detail:{message:"Before slide change!",currentIndex:e,contentArray:t}}))}(y,v.contentArray);const t=y+e;t<0||t>=v.contentArray.length||(-1===e||v.contentArray[y].visited||i?(y=t,k()):b(),O())}function O(){v.contentArray.length&&v.contentArray[y]?(l.disabled=0===y,u.disabled=y>=v.contentArray.length-1||!v.contentArray[y].visited&&!i):l.disabled=u.disabled=!0}function R(){const e=v.contentArray.filter((e=>e.visited)).length/v.contentArray.length*100;p.style.width=e+"%",p.setAttribute("aria-valuenow",e.toFixed(2)),p.textContent=`${e.toFixed(0)}%`}function _(e=!0){var t,n,o;v.contentArray[y].visited=e,I(),t=y,n=v.contentArray.length,o=v.contentArray[y],document.body.dispatchEvent(new CustomEvent("slideCompleted",{detail:{message:"Slide completed!",slideIndex:t,totalSlides:n,slide:o}}))}function x(e){if(pipwerks.SCORM.connection.isActive){const t=pipwerks.SCORM.set("cmi.core.lesson_status",e);return t&&pipwerks.SCORM.save(),t}return sessionStorage.setItem("cmi.core.lesson_status",e),!0}function T(){let e=pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get("cmi.suspend_data"):sessionStorage.getItem("cmi.suspend_data");if(e)try{return JSON.parse(e)}catch{return e}return""}function B(e){const t=JSON.stringify(e);if(pipwerks.SCORM.connection.isActive){const e=pipwerks.SCORM.set("cmi.suspend_data",t);return e&&pipwerks.SCORM.save(),e}return sessionStorage.setItem("cmi.suspend_data",t),!0}function q(e){B(e)}function N(){if(pipwerks.SCORM.connection.isActive&&!f){const e=(Date.now()-h)/1e3,t=String(Math.floor(e/3600)).padStart(2,"0"),n=String(Math.floor(e%3600/60)).padStart(2,"0"),o=String(Math.floor(e%60)).padStart(2,"0");pipwerks.SCORM.set("cmi.core.session_time",`${t}:${n}:${o}`),pipwerks.SCORM.save(),pipwerks.SCORM.quit(),f=!0}}function D(e){return pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get(e)??"":sessionStorage.getItem(e)??""}return document.addEventListener("DOMContentLoaded",(()=>{!function(e){const t=pipwerks.SCORM,n=t.init();n&&("not attempted"===t.get("cmi.core.lesson_status")&&(t.set("cmi.core.lesson_status","incomplete"),t.save()),h=Date.now());e(n)}((()=>C())),window.addEventListener("beforeunload",N),[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((e=>new bootstrap.Tooltip(e)));const e=document.getElementById("coursenav-offcanvas"),t=document.getElementById("wrap-course-content"),n=bootstrap.Offcanvas.getOrCreateInstance(e);e.addEventListener("shown.bs.offcanvas",(()=>{if(t.querySelector(".offcanvas-backdrop"))return;const e=document.createElement("div");e.className="offcanvas-backdrop fade",t.appendChild(e),e.getBoundingClientRect(),e.classList.add("show"),e.addEventListener("click",(()=>n.hide()))})),e.addEventListener("hidden.bs.offcanvas",(()=>{t.querySelector(".offcanvas-backdrop")?.remove()}))})),{audioController:o,createSound:n,soundClick:function(){d.play()},isDebug:function(){return i},getStudentName:()=>D("cmi.core.student_name"),getLessonLocation:function(){if(pipwerks.SCORM.connection.isActive){return pipwerks.SCORM.get("cmi.core.lesson_location")??""}return sessionStorage.getItem("cmi.core.lesson_location")??""},setLessonLocation:function(e){if(pipwerks.SCORM.connection.isActive){const t=pipwerks.SCORM.set("cmi.core.lesson_location",e);return t&&pipwerks.SCORM.save(),t}return sessionStorage.setItem("cmi.core.lesson_location",e),!0},getLessonStatus:function(){return pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get("cmi.core.lesson_status")??"":sessionStorage.getItem("cmi.core.lesson_status")??""},setLessonStatus:x,getScore:function(){let e=pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get("cmi.core.score.raw"):sessionStorage.getItem("cmi.core.score.raw");return null!=e&&""!==e?Number(e):null},setScore:function(e){if(pipwerks.SCORM.connection.isActive){const t=pipwerks.SCORM.set("cmi.core.score.raw",e);return t&&pipwerks.SCORM.save(),t}return sessionStorage.setItem("cmi.core.score.raw",e),!0},getSuspendData:T,setSuspendData:B,getScormData:D,setScormData:function(e,t){if(pipwerks.SCORM.connection.isActive){const n=pipwerks.SCORM.set(e,t);return n&&pipwerks.SCORM.save(),n}return sessionStorage.setItem(e,t),!0},nextSlide:()=>L(1),prevSlide:()=>L(-1),gotoSlide:function(e){const t=Math.floor(e);!isNaN(t)&&t>=0&&tv.contentArray[y]?.visited||!1,isCompletedSlideIndex:e=>e>=0&&ev.contentArray[y],getCurrentIndex:()=>y,getCourseData:()=>v,getCourseStructure:()=>g,getCourseConfig:()=>e,getCourseTitle:()=>g?.title||"",getCourseModules:()=>g?.modules||[],getCourseContentArray:()=>v.contentArray,resetCourse:function(){v.contentArray.forEach((e=>e.visited=!1)),v.maximumAdvance=0,y=0,I(),k()},markSlidesAsVisited:function(e){e.sort(((e,t)=>t-e)).forEach((e=>{y=e,_(!0)}))},setSlideVisited:_,completeLesson:()=>x("completed"),updateProgressBar:R,getProgressPercent:function(e=!1){if(!e){const e=v.contentArray.filter((e=>e.visited)).length;return parseFloat((e/v.contentArray.length*100).toFixed(2))}const t=v.contentArray[y],n=v.contentArray.filter((e=>e.moduleTitle===t.moduleTitle)),o=n.filter((e=>e.visited)).length;return n.length?parseFloat((o/n.length*100).toFixed(2)):0},getProgressByModule:function(){const e={};v.contentArray.forEach((t=>{const n=t.moduleTitle||"Sin módulo";e[n]||(e[n]={total:0,visited:0}),e[n].total++,t.visited&&e[n].visited++}));const t={};return Object.entries(e).forEach((([e,{total:n,visited:o}])=>{t[e]=parseFloat((o/n*100).toFixed(2))})),t},getCurrentModuleSlides:()=>{const e=v.contentArray[y]?.moduleTitle;return v.contentArray.filter((t=>t.moduleTitle===e))},getCurrentModuleTitle:()=>v.contentArray[y]?.moduleTitle||"",getCurrentCourseTitle:()=>v.contentArray[y]?.courseTitle||"",save:()=>pipwerks.SCORM.connection.isActive?pipwerks.SCORM.save():q(v),reload:k,loadModule:e=>{const t=v.contentArray.findIndex((t=>t.moduleTitle===e));t>=0&&(y=t,k())}}}(COURSE_CONFIG);window.CourseNav=CourseNav; \ No newline at end of file +var CourseNav=function(e){"use strict";new Set;class t extends Howl{constructor(e){super(e),this._timeupdateListeners=[],this._interval=null,this._startTimeUpdate()}_startTimeUpdate(){this._interval=setInterval((()=>{this.playing()&&this._emitTimeUpdate(this.seek())}),250)}_emitTimeUpdate(e){this._timeupdateListeners.forEach((t=>t(e)))}onTimeUpdate(e){this._timeupdateListeners.push(e)}offTimeUpdate(e){this._timeupdateListeners=this._timeupdateListeners.filter((t=>t!==e))}play(e){const t=super.play(e);return this._interval||this._startTimeUpdate(),t}pause(e){const t=super.pause(e);return clearInterval(this._interval),this._interval=null,t}stop(e){super.stop(e),clearInterval(this._interval),this._interval=null}}function n(e){return e?new t({src:[e]}):null}const o=new class{constructor(){this.audioElement=null,this.audioControlButton=document.getElementById("coursenav-audio-control"),this.audioIcon=document.getElementById("coursenav-audio-icon"),this.progressCircle=document.getElementById("coursenav-progress-circle"),this.isMuted=!1,this.progressCircle&&(this.progressCircle.style.display="none"),this.audioControlButton&&this.audioControlButton.addEventListener("click",this.toggleAudio.bind(this))}stopAllSoundsAndPlay(e){Howler._howls?.forEach((e=>e.stop())),this.setAudio(e),this.playAudio()}loadAudio(e){this.audioElement&&this.audioElement.stop(),e&&(this.audioElement=n(e),this._bindAudioEvents())}playAudio(){this.audioElement?.play()}pauseAudio(){this.audioElement?.pause()}stopAudio(){this.audioElement?.stop()}toggleAudio(){this.audioElement&&(this.audioElement.playing()?this.pauseAudio():this.playAudio())}toggleMute(){this.isMuted=!this.isMuted,Howler.mute(this.isMuted),this.updateIcon(),document.querySelectorAll("video").forEach((e=>e.muted=this.isMuted))}onPlay(){this.progressCircle&&(this.progressCircle.style.display="block");const e=this.audioElement.seek();this.updateProgressCircle(e),this.updateIcon()}onEnd(){this.progressCircle&&(this.progressCircle.style.display="none"),this.updateIcon()}updateIcon(){if(!this.audioIcon)return;const e=this.audioElement?.playing();this.audioIcon.className=e?"fa-duotone fa-solid fa-pause":"fa-duotone fa-solid fa-play"}updateProgressCircle(e){if(!this.progressCircle||!this.audioElement)return;const t=parseFloat(this.progressCircle.getAttribute("r")),n=2*Math.PI*t,o=n-e/this.audioElement.duration()*n;this.progressCircle.setAttribute("stroke-dashoffset",o)}setAudioUrl(e){this.loadAudio(e)}setAudio(e){e instanceof t&&(this.audioElement?.stop(),this.audioElement=e,this._bindAudioEvents())}_bindAudioEvents(){this.audioElement.on("play",this.onPlay.bind(this)),this.audioElement.on("pause",this.updateIcon.bind(this)),this.audioElement.on("stop",this.updateIcon.bind(this)),this.audioElement.on("end",this.onEnd.bind(this)),this.audioElement.onTimeUpdate(this.updateProgressCircle.bind(this))}},s=e.COURSE_CONFIG_URL||"config.json",i=e.DEBUG||!1,r=(e.KEY,document.getElementById("coursenav-main-content")),a=document.getElementById("wrap-course-content");a.setAttribute("data-original-class",a.className);const c=document.getElementById("coursenav-loader-course"),l=new Audio("audio/click.mp3"),d=document.getElementById("coursenav-prev-btn"),u=document.getElementById("coursenav-next-btn"),p=document.getElementById("coursenav-progress-bar"),m=document.getElementById("coursenav-main-menu");let h;pipwerks.SCORM.version="1.2",pipwerks.debug.isActive=i,pipwerks.SCORM.handleExitMode=!1;let g=!1,f=null,v={contentArray:[],maximumAdvance:0},y=0;function A(e,t="",n="",o=null){e.forEach((e=>{const s=!o&&!n?e.title:n;e.content&&v.contentArray.push({title:e.title,content:e.content,audio:e.audio,visited:!1,courseTitle:t,moduleTitle:s,parentTitle:o}),e.topics&&A(e.topics,t,s,e.title)}))}function C(){const e=new XMLHttpRequest;e.open("GET",`${s}?_=${Date.now()}`,!0),e.setRequestHeader("X-Requested-With","XMLHttpRequest"),e.withCredentials=!0,e.responseType="json",e.onload=function(){if(e.status>=200&&e.status<300){f=e.response,v={contentArray:[],maximumAdvance:0},f.title&&(document.title=f.title),A(f.modules,f.title||"");const t=_()||{contentArray:[],maximumAdvance:0};t.contentArray&&function(e,t){return!(!e||!t||e.length!==t.length)&&e.every(((e,n)=>e.title===t[n].title&&e.content===t[n].content))}(t.contentArray,v.contentArray)&&(v=t),v.maximumAdvance>0?"undefined"==typeof Swal?(y=confirm("¿Retomar tu progreso?")?v.maximumAdvance:0,S()):Swal.fire({title:"¿Dónde quieres empezar?",text:"Retomar o comenzar de nuevo",icon:"question",showCancelButton:!0,confirmButtonText:"Retomar",cancelButtonText:"Comenzar",target:r,customClass:{confirmButton:"btn btn-primary",cancelButton:"btn btn-secondary"}}).then((e=>{y=e.isConfirmed?v.maximumAdvance:0,S()})):S(),T(v)}else r?.remove()},e.onerror=function(){r?.remove()},e.send()}function S(){m&&(m.innerHTML="",(f.modules||[]).forEach((e=>{const t=document.createElement("ul");t.classList.add("course-menu"),t.appendChild(w(e)),m.appendChild(t)})),E(),E()),v.contentArray.length>0?M():r.innerHTML="
No hay contenido.
",d?.addEventListener("click",(()=>{l.play(),k(-1)})),u?.addEventListener("click",(()=>{l.play(),k(1)})),I()}function w(e){const t=document.createElement("li");t.classList.add("menu-item");const n=document.createElement("div");n.classList.add("witem"),t.appendChild(n);const o=document.createElement("a");o.classList.add("coursenav-link"),o.textContent=e.title;const s=v.contentArray.findIndex((t=>t.content===e.content&&t.title===e.title));if(o.dataset.coursenavindex=s,o.dataset.coursenavvisited=!0,n.appendChild(o),o.addEventListener("click",(()=>{l.play();const e=parseInt(o.dataset.coursenavindex,10);if(e>=0)y=e,function(){const e=document.getElementById("coursenav-offcanvas");(bootstrap.Offcanvas.getInstance(e)||new bootstrap.Offcanvas(e)).hide()}(),M();else{const e=n.querySelector(".toggle-icon");e&&e.click()}})),e.topics?.length){const o=document.createElement("span");o.classList.add("toggle-icon"),o.innerHTML='',n.appendChild(o);const s=document.createElement("ul");s.classList.add("sub-ul","open"),e.topics.forEach((e=>s.appendChild(w(e)))),t.appendChild(s),o.addEventListener("click",(()=>{l.play();const e=s.classList.toggle("open"),t=o.querySelector("i");t.classList.toggle("fa-square-chevron-down",e),t.classList.toggle("fa-square-chevron-right",!e)}))}return t}function E(){document.querySelectorAll("#coursenav-main-menu > ul.course-menu").forEach((function e(t){const n=new Set;Array.from(t.children).filter((e=>"LI"===e.tagName)).forEach((t=>{const o=t.querySelector(":scope > .witem > .coursenav-link");if(o){const e=o.textContent.trim();n.has(e)?t.style.display="none":n.add(e)}t.querySelectorAll(":scope > ul").forEach(e)}))}))}function M(){r.innerHTML="",a.className=a.getAttribute("data-original-class"),window.scrollTo(0,0),c.style.display="block";const e=v.contentArray[y];e?.content&&(o.stopAudio(),Howler._howls?.forEach((e=>e.stop())),Swal.isVisible()&&Swal.close(),document.documentElement.classList.remove("swal2-shown","swal2-height-auto"),document.body.classList.remove("swal2-shown","swal2-height-auto"),document.documentElement.removeAttribute("aria-hidden"),document.body.removeAttribute("aria-hidden"),document.querySelectorAll("script[aria-hidden]").forEach((e=>e.removeAttribute("aria-hidden"))),fetch(e.content,{cache:"no-store"}).then((e=>{if(!e.ok)throw new Error(e.statusText);return e.text()})).then((e=>{$(r).html(e)})).catch((e=>{r.innerHTML=`
${e.message}
`})).finally((()=>{v.maximumAdvance=Math.max(v.maximumAdvance,y),c.style.display="none",b(),function(e,t){document.body.dispatchEvent(new CustomEvent("slideChange",{detail:{message:"Slide changed!",slideIndex:e,contentArray:t}}))}(y,v.contentArray)})))}function b(){T(v),I(),O(),document.querySelectorAll(".coursenav-link").forEach((e=>{const t=parseInt(e.dataset.coursenavindex,10);v.contentArray[t]&&(e.dataset.coursenavvisited=!0,e.classList.add("visited"))}))}function k(e){!function(e,t){document.body.dispatchEvent(new CustomEvent("beforeSlideChange",{detail:{message:"Before slide change!",currentIndex:e,contentArray:t}}))}(y,v.contentArray);const t=y+e;t<0||t>=v.contentArray.length||(-1===e||v.contentArray[y].visited||i?(y=t,M()):"undefined"==typeof Swal?alert("Debes completar el contenido actual antes de avanzar."):Swal.fire({text:"Debes completar el contenido actual antes de avanzar.",icon:"warning",target:r,customClass:{confirmButton:"btn btn-primary",cancelButton:"btn btn-warning"}}),I())}function I(){v.contentArray.length&&v.contentArray[y]?(d.disabled=0===y,u.disabled=y>=v.contentArray.length-1||!v.contentArray[y].visited&&!i):d.disabled=u.disabled=!0}function O(){const e=v.contentArray.filter((e=>e.visited)).length/v.contentArray.length*100;p.style.width=e+"%",p.setAttribute("aria-valuenow",e.toFixed(2)),p.textContent=`${e.toFixed(0)}%`}function L(e=!0){var t,n,o;v.contentArray[y].visited=e,b(),t=y,n=v.contentArray.length,o=v.contentArray[y],document.body.dispatchEvent(new CustomEvent("slideCompleted",{detail:{message:"Slide completed!",slideIndex:t,totalSlides:n,slide:o}}))}function R(e){if(pipwerks.SCORM.connection.isActive){const t=pipwerks.SCORM.set("cmi.core.lesson_status",e);return t&&pipwerks.SCORM.save(),t}return sessionStorage.setItem("cmi.core.lesson_status",e),!0}function _(){let e=pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get("cmi.suspend_data"):sessionStorage.getItem("cmi.suspend_data");if(e)try{return JSON.parse(e)}catch{return e}return""}function x(e){const t=JSON.stringify(e);if(pipwerks.SCORM.connection.isActive){const e=pipwerks.SCORM.set("cmi.suspend_data",t);return e&&pipwerks.SCORM.save(),e}return sessionStorage.setItem("cmi.suspend_data",t),!0}function T(e){x(e)}function B(){if(pipwerks.SCORM.connection.isActive&&!g){const e=(Date.now()-h)/1e3,t=String(Math.floor(e/3600)).padStart(2,"0"),n=String(Math.floor(e%3600/60)).padStart(2,"0"),o=String(Math.floor(e%60)).padStart(2,"0");pipwerks.SCORM.set("cmi.core.session_time",`${t}:${n}:${o}`),pipwerks.SCORM.save(),pipwerks.SCORM.quit(),g=!0}}function q(e){return pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get(e)??"":sessionStorage.getItem(e)??""}return document.addEventListener("DOMContentLoaded",(()=>{!function(e){const t=pipwerks.SCORM,n=t.init();n&&("not attempted"===t.get("cmi.core.lesson_status")&&(t.set("cmi.core.lesson_status","incomplete"),t.save()),h=Date.now());e(n)}((()=>C())),window.addEventListener("beforeunload",B),[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((e=>new bootstrap.Tooltip(e)));const e=document.getElementById("coursenav-offcanvas"),t=document.getElementById("wrap-course-content"),n=bootstrap.Offcanvas.getOrCreateInstance(e);e.addEventListener("shown.bs.offcanvas",(()=>{if(t.querySelector(".offcanvas-backdrop"))return;const e=document.createElement("div");e.className="offcanvas-backdrop fade",t.appendChild(e),e.getBoundingClientRect(),e.classList.add("show"),e.addEventListener("click",(()=>n.hide()))})),e.addEventListener("hidden.bs.offcanvas",(()=>{t.querySelector(".offcanvas-backdrop")?.remove()}))})),{audioController:o,createSound:n,soundClick:function(){l.play()},isDebug:function(){return i},getStudentName:()=>q("cmi.core.student_name"),getLessonLocation:function(){if(pipwerks.SCORM.connection.isActive){return pipwerks.SCORM.get("cmi.core.lesson_location")??""}return sessionStorage.getItem("cmi.core.lesson_location")??""},setLessonLocation:function(e){if(pipwerks.SCORM.connection.isActive){const t=pipwerks.SCORM.set("cmi.core.lesson_location",e);return t&&pipwerks.SCORM.save(),t}return sessionStorage.setItem("cmi.core.lesson_location",e),!0},getLessonStatus:function(){return pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get("cmi.core.lesson_status")??"":sessionStorage.getItem("cmi.core.lesson_status")??""},setLessonStatus:R,getScore:function(){let e=pipwerks.SCORM.connection.isActive?pipwerks.SCORM.get("cmi.core.score.raw"):sessionStorage.getItem("cmi.core.score.raw");return null!=e&&""!==e?Number(e):null},setScore:function(e){if(pipwerks.SCORM.connection.isActive){const t=pipwerks.SCORM.set("cmi.core.score.raw",e);return t&&pipwerks.SCORM.save(),t}return sessionStorage.setItem("cmi.core.score.raw",e),!0},getSuspendData:_,setSuspendData:x,getScormData:q,setScormData:function(e,t){if(pipwerks.SCORM.connection.isActive){const n=pipwerks.SCORM.set(e,t);return n&&pipwerks.SCORM.save(),n}return sessionStorage.setItem(e,t),!0},nextSlide:()=>k(1),prevSlide:()=>k(-1),gotoSlide:function(e){const t=Math.floor(e);!isNaN(t)&&t>=0&&tv.contentArray[y]?.visited||!1,isCompletedSlideIndex:e=>e>=0&&ev.contentArray[y],getCurrentIndex:()=>y,getCourseData:()=>v,getCourseStructure:()=>f,getCourseConfig:()=>e,getCourseTitle:()=>f?.title||"",getCourseModules:()=>f?.modules||[],getCourseContentArray:()=>v.contentArray,resetCourse:function(){v.contentArray.forEach((e=>e.visited=!1)),v.maximumAdvance=0,y=0,b(),M()},markSlidesAsVisited:function(e){e.sort(((e,t)=>t-e)).forEach((e=>{y=e,L(!0)}))},setSlideVisited:L,completeLesson:()=>R("completed"),updateProgressBar:O,getProgressPercent:function(e=!1){if(!e){const e=v.contentArray.filter((e=>e.visited)).length;return parseFloat((e/v.contentArray.length*100).toFixed(2))}const t=v.contentArray[y],n=v.contentArray.filter((e=>e.moduleTitle===t.moduleTitle)),o=n.filter((e=>e.visited)).length;return n.length?parseFloat((o/n.length*100).toFixed(2)):0},getProgressByModule:function(){const e={};v.contentArray.forEach((t=>{const n=t.moduleTitle||"Sin módulo";e[n]||(e[n]={total:0,visited:0}),e[n].total++,t.visited&&e[n].visited++}));const t={};return Object.entries(e).forEach((([e,{total:n,visited:o}])=>{t[e]=parseFloat((o/n*100).toFixed(2))})),t},getCurrentModuleSlides:()=>{const e=v.contentArray[y]?.moduleTitle;return v.contentArray.filter((t=>t.moduleTitle===e))},getCurrentModuleTitle:()=>v.contentArray[y]?.moduleTitle||"",getCurrentCourseTitle:()=>v.contentArray[y]?.courseTitle||"",save:()=>pipwerks.SCORM.connection.isActive?pipwerks.SCORM.save():T(v),reload:M,loadModule:e=>{const t=v.contentArray.findIndex((t=>t.moduleTitle===e));t>=0&&(y=t,M())}}}(COURSE_CONFIG);window.CourseNav=CourseNav; \ No newline at end of file