{"id":90283,"date":"2025-05-28T08:28:24","date_gmt":"2025-05-28T13:28:24","guid":{"rendered":"https:\/\/uninavarra.edu.co\/?page_id=90283"},"modified":"2025-12-12T09:45:36","modified_gmt":"2025-12-12T14:45:36","slug":"carta-de-admision-interactiva","status":"publish","type":"page","link":"https:\/\/uninavarra.edu.co\/en\/carta-de-admision-interactiva\/","title":{"rendered":"Carta de admisi\u00f3n interactiva"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><div data-vc-full-width=\"true\" data-vc-full-width-init=\"false\" data-vc-stretch-content=\"true\" class=\"wpb-container vc_row-no-padding\"><div class=\"container-full\"><div class=\"vc_row wpb_row vc_row-fluid row \"><div class=\"col-sm-12  vc_\">\n\t\t<div class=\"wpb_wrapper \">\n\t\t\t\n\t<div class=\"wpb_raw_code wpb_raw_js\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/canvas-confetti@1.9.3\/dist\/confetti.browser.min.js\"><\/script>\n\t\t<\/div>\n\t<\/div>\n\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<div class=\"contenedor-carta-completa\">\n    <div class=\"marco-carta-vertical\" id=\"cartaAdmision\">\n        <div class=\"solapa-izquierda-carta\"><\/div>\n        <div class=\"solapa-derecha-carta\"><\/div>\n        <div class=\"sello-centro-carta\"><\/div>\n        \n        <div class=\"contenido-carta-interior\" style=\"display: flex; justify-content: center; align-items: center; padding: 0;\">\n            <img decoding=\"async\" id=\"imagenTarjeta\" src=\"\" alt=\"Felicitaciones\" style=\"width: 100%; height: 100%; opacity: 0; transition: opacity 0.3s ease;\">\n        <\/div>\n    <\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<div class=\"wpb_raw_code wpb_raw_js\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<script>\n    \/\/ Variables globales\n    let animacionEnProceso = false;\n    let confettiInterval = null;\n\n    \/\/ Configuraci\u00f3n del Google Sheet\n    const GOOGLE_SHEET_ID = '1Kku_zEjaZTD3G7M_ej9t76F8IRHAFqg5NoVHF2ofXzI';\n    const API_KEY = 'AIzaSyBnk4I7IbLq1GV4wVuIypF6lAXijdVknSw';\n    const RANGO = 'Invitados!A:Z'; \/\/ Prueba con \"Hoja 1\" (con espacio) o el nombre real de tu hoja\n    const IMAGEN_POR_DEFECTO = 'https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2025\/12\/Felicitaciones-1.png';\n\n    \/\/ Funci\u00f3n para obtener datos de Google Sheets\n    async function obtenerDatosGoogleSheet(id, rango, key) {\n        try {\n            const url = `https:\/\/sheets.googleapis.com\/v4\/spreadsheets\/${id}\/values\/${rango}?key=${key}`;\n            const response = await fetch(url);\n\n            if (!response.ok) {\n                throw new Error(`Error HTTP: ${response.status}`);\n            }\n\n            return await response.json();\n        } catch (error) {\n            console.error('Error al obtener datos de Google Sheet:', error);\n            throw error;\n        }\n    }\n\n    \/\/ Funci\u00f3n para buscar la imagen por c\u00e9dula\n    function buscarImagenPorCedula(datos, cedula) {\n        try {\n            const values = datos.values;\n\n            if (!values || values.length === 0) {\n                console.log('No se encontraron datos en el Google Sheet');\n                return IMAGEN_POR_DEFECTO;\n            }\n\n            \/\/ La primera fila contiene los encabezados\n            const encabezados = values[0];\n\n            \/\/ Buscar los \u00edndices de las columnas de c\u00e9dula e imagen\n            const indiceCedula = encabezados.findIndex(h =>\n                h.toLowerCase().includes('cedula') || h.toLowerCase().includes('c\u00e9dula')\n            );\n            \/\/ Buscar espec\u00edficamente la columna \"Enlace_tarjeta\" (prioridad a \"tarjeta\")\n            const indiceImagen = encabezados.findIndex(h =>\n                h.toLowerCase().includes('tarjeta')\n            );\n\n            if (indiceCedula === -1 || indiceImagen === -1) {\n                console.log('No se encontraron las columnas de c\u00e9dula o imagen');\n                console.log('Encabezados encontrados:', encabezados);\n                return IMAGEN_POR_DEFECTO;\n            }\n\n            console.log(`Buscando c\u00e9dula: ${cedula}`);\n            console.log(`\u00cdndice c\u00e9dula: ${indiceCedula}, \u00cdndice imagen: ${indiceImagen}`);\n\n            \/\/ Buscar la c\u00e9dula en las filas de datos (desde la fila 1)\n            for (let i = 1; i < values.length; i++) {\n                const fila = values[i];\n                const cedulaExcel = fila[indiceCedula]?.toString().trim();\n                const urlImagen = fila[indiceImagen]?.toString().trim();\n\n                if (cedulaExcel === cedula && urlImagen) {\n                    console.log(`\u2713 C\u00e9dula encontrada! Imagen: ${urlImagen}`);\n                    return urlImagen;\n                }\n            }\n\n            console.log('No se encontr\u00f3 coincidencia para la c\u00e9dula');\n            return IMAGEN_POR_DEFECTO;\n\n        } catch (error) {\n            console.error('Error al procesar datos:', error);\n            return IMAGEN_POR_DEFECTO;\n        }\n    }\n\n    \/\/ Funci\u00f3n para establecer la imagen en la carta\n    function establecerImagenCarta(urlImagen) {\n        const contenidoCarta = document.getElementById('imagenTarjeta');\n        if (contenidoCarta) {\n            \/\/ Precargar la imagen antes de mostrarla\n            const img = new Image();\n            img.onload = function() {\n                contenidoCarta.src = urlImagen;\n                contenidoCarta.style.opacity = '1';\n                console.log('Imagen establecida en la carta:', urlImagen);\n            };\n            img.onerror = function() {\n                \/\/ Si hay error, usar imagen por defecto\n                contenidoCarta.src = IMAGEN_POR_DEFECTO;\n                contenidoCarta.style.opacity = '1';\n                console.log('Error al cargar imagen, usando imagen por defecto');\n            };\n            img.src = urlImagen;\n        }\n    }\n\n    \/\/ Funci\u00f3n para inicializar y cargar los datos\n    async function inicializarCarta() {\n        \/\/ Obtener la c\u00e9dula de la URL\n        const urlParams = new URLSearchParams(window.location.search);\n        const cedula = urlParams.get('cedula');\n\n        if (!cedula) {\n            console.log('No se proporcion\u00f3 c\u00e9dula en la URL. Usando imagen por defecto.');\n            establecerImagenCarta(IMAGEN_POR_DEFECTO);\n            return;\n        }\n\n        try {\n            \/\/ Obtener datos del Google Sheet\n            const datos = await obtenerDatosGoogleSheet(GOOGLE_SHEET_ID, RANGO, API_KEY);\n\n            \/\/ Buscar la imagen correspondiente\n            const urlImagen = buscarImagenPorCedula(datos, cedula.trim());\n\n            \/\/ Establecer la imagen\n            establecerImagenCarta(urlImagen);\n\n        } catch (error) {\n            console.error('Error al inicializar la carta:', error);\n            establecerImagenCarta(IMAGEN_POR_DEFECTO);\n        }\n    }\n\n    document.addEventListener('DOMContentLoaded', function() {\n        \/\/ Inicializar la carta con los datos del Google Sheet\n        inicializarCarta();\n\n        const cartaElemento = document.getElementById('cartaAdmision');\n\n        \/\/ Event listener para la carta\n        cartaElemento.addEventListener('click', function() {\n            if (animacionEnProceso) return;\n\n            if (!this.classList.contains('carta-abierta')) {\n                abrirCarta();\n            } else {\n                cerrarCarta();\n            }\n        });\n\n        \/\/ Funciones de animaci\u00f3n de la carta\n        function abrirCarta() {\n            animacionEnProceso = true;\n            cartaElemento.classList.add('carta-abierta');\n\n            setTimeout(() => {\n                iniciarFuegosArtificiales();\n                setTimeout(() => {\n                    animacionEnProceso = false;\n                }, 500);\n            }, 800);\n        }\n\n        function cerrarCarta() {\n            animacionEnProceso = true;\n            cartaElemento.classList.remove('carta-abierta');\n            detenerFuegosArtificiales();\n\n            setTimeout(() => {\n                animacionEnProceso = false;\n            }, 1000);\n        }\n\n        function iniciarFuegosArtificiales() {\n            var duration = 12 * 1000;\n            var animationEnd = Date.now() + duration;\n\n            const count = 150;\n            const defaults = {\n                origin: { y: 0.7 },\n                colors: ['#f5f5f5', '#e5e7eb', '#d1d5db', '#9ca3af', '#6b7280', '#4b5563', '#111827'],\n                gravity: 0.3,\n                drift: 0.1,\n                disableForReducedMotion: false\n            };\n\n            function fire(particleRatio, opts) {\n                confetti(\n                    Object.assign({}, defaults, opts, {\n                        particleCount: Math.floor(count * particleRatio),\n                    })\n                );\n            }\n\n            function lanzarExplosion() {\n                fire(0.25, {\n                    spread: 26,\n                    startVelocity: 55,\n                    ticks: 300,\n                    gravity: 0.3,\n                    scalar: 1.2\n                });\n                fire(0.2, {\n                    spread: 60,\n                    ticks: 300,\n                    gravity: 0.3,\n                    scalar: 1.1\n                });\n                fire(0.35, {\n                    spread: 100,\n                    decay: 0.85,\n                    scalar: 0.9,\n                    ticks: 300,\n                    gravity: 0.3,\n                });\n                fire(0.1, {\n                    spread: 120,\n                    startVelocity: 25,\n                    decay: 0.85,\n                    scalar: 1.3,\n                    ticks: 300,\n                    gravity: 0.3,\n                });\n                fire(0.1, {\n                    spread: 120,\n                    startVelocity: 45,\n                    ticks: 300,\n                    gravity: 0.3,\n                    scalar: 1.0\n                });\n\n                fire(0.15, {\n                    spread: 80,\n                    startVelocity: 35,\n                    ticks: 300,\n                    gravity: 0.3,\n                    origin: { y: 0.5 },\n                    scalar: 0.8\n                });\n\n                fire(0.15, {\n                    spread: 90,\n                    startVelocity: 40,\n                    ticks: 300,\n                    gravity: 0.3,\n                    origin: { y: 0.8 },\n                    scalar: 1.1\n                });\n            }\n\n            confettiInterval = setInterval(function() {\n                var timeLeft = animationEnd - Date.now();\n                if (timeLeft <= 0) {\n                    clearInterval(confettiInterval);\n                    return;\n                }\n                lanzarExplosion();\n            }, 5000);\n\n            lanzarExplosion();\n        }\n\n        function detenerFuegosArtificiales() {\n            if (confettiInterval) {\n                clearInterval(confettiInterval);\n                confettiInterval = null;\n            }\n        }\n    });\n<\/script>\n\t\t<\/div>\n\t<\/div>\n\n\t\t<\/div> \n\t<\/div><\/div><\/div><\/div><div class=\"vc_row-full-width\"><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-90283","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Carta de admisi\u00f3n interactiva - Uninavarra<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uninavarra.edu.co\/en\/carta-de-admision-interactiva\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Carta de admisi\u00f3n interactiva - Uninavarra\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uninavarra.edu.co\/en\/carta-de-admision-interactiva\/\" \/>\n<meta property=\"og:site_name\" content=\"Uninavarra\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/UninavarraEduca\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T14:45:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@uninavarraeduca\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/carta-de-admision-interactiva\\\/\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/carta-de-admision-interactiva\\\/\",\"name\":\"Carta de admisi\u00f3n interactiva - Uninavarra\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#website\"},\"datePublished\":\"2025-05-28T13:28:24+00:00\",\"dateModified\":\"2025-12-12T14:45:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/carta-de-admision-interactiva\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uninavarra.edu.co\\\/carta-de-admision-interactiva\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/carta-de-admision-interactiva\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uninavarra.edu.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Carta de admisi\u00f3n interactiva\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#website\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/\",\"name\":\"UNINAVARRA\",\"description\":\"Haz realidad tu deseo de aprender\",\"publisher\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uninavarra.edu.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#organization\",\"name\":\"Fundaci\u00f3n Universitaria Navarra - UNINAVARRA\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Escudo-uninavarra-Solo.png\",\"contentUrl\":\"https:\\\/\\\/uninavarra.edu.co\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Escudo-uninavarra-Solo.png\",\"width\":1500,\"height\":1401,\"caption\":\"Fundaci\u00f3n Universitaria Navarra - UNINAVARRA\"},\"image\":{\"@id\":\"https:\\\/\\\/uninavarra.edu.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/UninavarraEduca\",\"https:\\\/\\\/x.com\\\/uninavarraeduca\",\"https:\\\/\\\/www.instagram.com\\\/uninavarra\\\/?hl=es\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fundacin-universitaria-navarra-uninavarra-b41225222\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Carta de admisi\u00f3n interactiva - Uninavarra","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uninavarra.edu.co\/en\/carta-de-admision-interactiva\/","og_locale":"en_US","og_type":"article","og_title":"Carta de admisi\u00f3n interactiva - Uninavarra","og_url":"https:\/\/uninavarra.edu.co\/en\/carta-de-admision-interactiva\/","og_site_name":"Uninavarra","article_publisher":"https:\/\/www.facebook.com\/UninavarraEduca","article_modified_time":"2025-12-12T14:45:36+00:00","twitter_card":"summary_large_image","twitter_site":"@uninavarraeduca","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/uninavarra.edu.co\/carta-de-admision-interactiva\/","url":"https:\/\/uninavarra.edu.co\/carta-de-admision-interactiva\/","name":"Carta de admisi\u00f3n interactiva - Uninavarra","isPartOf":{"@id":"https:\/\/uninavarra.edu.co\/#website"},"datePublished":"2025-05-28T13:28:24+00:00","dateModified":"2025-12-12T14:45:36+00:00","breadcrumb":{"@id":"https:\/\/uninavarra.edu.co\/carta-de-admision-interactiva\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uninavarra.edu.co\/carta-de-admision-interactiva\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/uninavarra.edu.co\/carta-de-admision-interactiva\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uninavarra.edu.co\/"},{"@type":"ListItem","position":2,"name":"Carta de admisi\u00f3n interactiva"}]},{"@type":"WebSite","@id":"https:\/\/uninavarra.edu.co\/#website","url":"https:\/\/uninavarra.edu.co\/","name":"UNINAVARRA","description":"Make your desire to learn a reality","publisher":{"@id":"https:\/\/uninavarra.edu.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uninavarra.edu.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uninavarra.edu.co\/#organization","name":"Navarre University Foundation - UNINAVARRA","url":"https:\/\/uninavarra.edu.co\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uninavarra.edu.co\/#\/schema\/logo\/image\/","url":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2024\/06\/Escudo-uninavarra-Solo.png","contentUrl":"https:\/\/uninavarra.edu.co\/wp-content\/uploads\/2024\/06\/Escudo-uninavarra-Solo.png","width":1500,"height":1401,"caption":"Fundaci\u00f3n Universitaria Navarra - UNINAVARRA"},"image":{"@id":"https:\/\/uninavarra.edu.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/UninavarraEduca","https:\/\/x.com\/uninavarraeduca","https:\/\/www.instagram.com\/uninavarra\/?hl=es","https:\/\/www.linkedin.com\/in\/fundacin-universitaria-navarra-uninavarra-b41225222\/"]}]}},"_links":{"self":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages\/90283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/comments?post=90283"}],"version-history":[{"count":0,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/pages\/90283\/revisions"}],"wp:attachment":[{"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/media?parent=90283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/categories?post=90283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uninavarra.edu.co\/en\/wp-json\/wp\/v2\/tags?post=90283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}