{"id":2372,"date":"2025-09-25T09:54:12","date_gmt":"2025-09-25T15:54:12","guid":{"rendered":"https:\/\/ddmx.cc\/?p=2372"},"modified":"2025-09-25T09:54:14","modified_gmt":"2025-09-25T15:54:14","slug":"generador-de-equipos-de-trabajo","status":"publish","type":"post","link":"https:\/\/ddmx.cc\/blog\/archivos\/2372","title":{"rendered":"Generador de equipos de trabajo"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Generador de Equipos Aleatorios<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n    <style>\n        \/* Estilos con prefijo \u00fanico para evitar conflictos *\/\n        body {\n            font-family: 'Inter', sans-serif;\n        }\n        .get-view-fade-in {\n            animation: get-fadeIn 0.5s ease-in-out;\n        }\n        @keyframes get-fadeIn {\n            from { opacity: 0; transform: translateY(20px); }\n            to { opacity: 1; transform: translateY(0); }\n        }\n        @keyframes get-spin {\n            from { transform: rotate(0deg); }\n            to { transform: rotate(360deg); }\n        }\n        .get-spinner {\n            border-top-color: transparent;\n            animation: get-spin 1s linear infinite;\n        }\n    <\/style>\n<\/head>\n<body class=\"bg-slate-100 dark:bg-slate-900 flex items-center justify-center min-h-screen p-4 transition-colors duration-300\">\n\n    <main class=\"bg-white dark:bg-slate-800 p-6 sm:p-8 rounded-2xl shadow-2xl max-w-2xl w-full\">\n        \n        <header class=\"text-center mb-6\">\n            <h1 class=\"text-2xl sm:text-3xl font-bold text-slate-800 dark:text-white\">Generador de Equipos Aleatorios<\/h1>\n            <p id=\"subtitle\" class=\"text-slate-500 dark:text-slate-400 mt-2\">Organiza tus grupos de trabajo de forma r\u00e1pida y justa.<\/p>\n        <\/header>\n\n        <!-- Vista de Configuraci\u00f3n -->\n        <div id=\"setup-view\" class=\"get-view-fade-in\">\n            <div class=\"space-y-6\">\n                <!-- Input para Cantidad de Equipos -->\n                <div>\n                    <label for=\"teamCount\" class=\"block mb-2 text-sm font-medium text-slate-600 dark:text-slate-300\">1. Selecciona la cantidad de equipos:<\/label>\n                    <select id=\"teamCount\" class=\"w-full p-3 bg-slate-50 border border-slate-300 text-slate-900 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-slate-700 dark:border-slate-600 dark:text-white transition\">\n                        <option value=\"2\">2 Equipos<\/option>\n                        <option value=\"3\">3 Equipos<\/option>\n                        <option value=\"4\">4 Equipos<\/option>\n                        <option value=\"5\">5 Equipos<\/option>\n                        <option value=\"6\">6 Equipos<\/option>\n                        <option value=\"7\">7 Equipos<\/option>\n                        <option value=\"8\">8 Equipos<\/option>\n                    <\/select>\n                <\/div>\n\n                <!-- Input para Nombres de Miembros -->\n                <div>\n                    <label for=\"memberNames\" class=\"block mb-2 text-sm font-medium text-slate-600 dark:text-slate-300\">2. Ingresa los nombres (uno por l\u00ednea):<\/label>\n                    <textarea id=\"memberNames\" rows=\"8\" class=\"w-full p-3 bg-slate-50 border border-slate-300 text-slate-900 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-slate-700 dark:border-slate-600 dark:placeholder-slate-400 dark:text-white transition\" placeholder=\"Ana Torres&#10;Carlos Soto&#10;Luisa Pardo&#10;...\"><\/textarea>\n                    <p id=\"error-message\" class=\"text-red-500 text-sm mt-2 hidden\">Por favor, ingresa al menos un nombre.<\/p>\n                <\/div>\n                \n                <!-- Bot\u00f3n de Acci\u00f3n -->\n                <button id=\"generateTeamsBtn\" class=\"w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-4 rounded-lg transition-all duration-300 transform hover:scale-105 focus:outline-none focus:ring-4 focus:ring-blue-300 dark:focus:ring-blue-800 shadow-lg\">\n                    Generar Equipos\n                <\/button>\n            <\/div>\n        <\/div>\n        \n        <!-- Vista de Animaci\u00f3n -->\n        <div id=\"animation-view\" class=\"hidden text-center py-10 get-view-fade-in\">\n            <div class=\"flex flex-col items-center justify-center space-y-4\">\n                <div class=\"get-spinner w-12 h-12 border-4 border-blue-500 rounded-full\"><\/div>\n                <p class=\"text-lg font-semibold text-slate-600 dark:text-slate-300\">Mezclando integrantes&#8230;<\/p>\n            <\/div>\n        <\/div>\n\n        <!-- Vista de Resultados -->\n        <div id=\"results-view\" class=\"hidden get-view-fade-in\">\n            <div id=\"results-container\" class=\"mb-6\">\n                <!-- Los equipos generados se insertar\u00e1n aqu\u00ed -->\n            <\/div>\n            <button id=\"resetBtn\" class=\"w-full bg-slate-600 hover:bg-slate-700 text-white font-bold py-3 px-4 rounded-lg transition-all duration-300 transform hover:scale-105 focus:outline-none focus:ring-4 focus:ring-slate-300 dark:focus:ring-slate-800 shadow-lg\">\n                Generar Nuevos Equipos\n            <\/button>\n        <\/div>\n\n    <\/main>\n\n    <script>\n        const setupView = document.getElementById('setup-view');\n        const animationView = document.getElementById('animation-view');\n        const resultsView = document.getElementById('results-view');\n        const generateBtn = document.getElementById('generateTeamsBtn');\n        const resetBtn = document.getElementById('resetBtn');\n        const subtitle = document.getElementById('subtitle');\n        const errorMessage = document.getElementById('error-message');\n\n        generateBtn.addEventListener('click', () => {\n            \/\/ 1. Obtener los valores\n            const teamCount = parseInt(document.getElementById('teamCount').value);\n            const namesInput = document.getElementById('memberNames').value;\n            errorMessage.classList.add('hidden');\n\n            \/\/ 2. Procesar y validar nombres\n            let names = namesInput.split('\\n')\n                                  .map(name => name.trim())\n                                  .filter(name => name !== '');\n\n            if (names.length === 0) {\n                errorMessage.classList.remove('hidden');\n                return;\n            }\n\n            \/\/ 3. Iniciar animaci\u00f3n\n            setupView.classList.add('hidden');\n            animationView.classList.remove('hidden');\n            subtitle.textContent = \"\u00a1Creando equipos con un poco de magia!\";\n\n            \/\/ 4. Simular sorteo y mostrar resultados\n            setTimeout(() => {\n                \/\/ Algoritmo de sorteo (Fisher-Yates Shuffle)\n                for (let i = names.length - 1; i > 0; i--) {\n                    const j = Math.floor(Math.random() * (i + 1));\n                    [names[i], names[j]] = [names[j], names[i]];\n                }\n\n                const teams = Array.from({ length: teamCount }, () => []);\n                names.forEach((name, index) => {\n                    teams[index % teamCount].push(name);\n                });\n\n                \/\/ Mostrar resultados\n                const resultsContainer = document.getElementById('results-container');\n                resultsContainer.innerHTML = ''; \n                \n                let gridColsClass = 'grid-cols-1 sm:grid-cols-2';\n                if (teamCount > 2) gridColsClass += ' lg:grid-cols-3';\n                if (teamCount > 6) gridColsClass = 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4';\n\n                const grid = document.createElement('div');\n                grid.className = `grid ${gridColsClass} gap-4`;\n                \n                teams.forEach((teamMembers, index) => {\n                    const teamCard = document.createElement('div');\n                    teamCard.className = 'bg-slate-50 dark:bg-slate-700 p-4 rounded-lg shadow-md';\n                    \n                    const teamTitle = document.createElement('h3');\n                    teamTitle.className = 'font-bold text-lg mb-2 text-blue-600 dark:text-blue-400';\n                    teamTitle.textContent = `Equipo ${index + 1}`;\n                    teamCard.appendChild(teamTitle);\n\n                    const memberList = document.createElement('ul');\n                    memberList.className = 'space-y-1';\n                    teamMembers.forEach(member => {\n                        const listItem = document.createElement('li');\n                        listItem.className = 'text-slate-700 dark:text-slate-300';\n                        listItem.textContent = member;\n                        memberList.appendChild(listItem);\n                    });\n                    teamCard.appendChild(memberList);\n                    grid.appendChild(teamCard);\n                });\n                resultsContainer.appendChild(grid);\n                \n                animationView.classList.add('hidden');\n                resultsView.classList.remove('hidden');\n                subtitle.textContent = \"\u00a1Equipos listos para colaborar!\";\n            }, 2500); \/\/ Duraci\u00f3n de la animaci\u00f3n\n        });\n\n        resetBtn.addEventListener('click', () => {\n            resultsView.classList.add('hidden');\n            setupView.classList.remove('hidden');\n            subtitle.textContent = \"Organiza tus grupos de trabajo de forma r\u00e1pida y justa.\";\n        });\n    <\/script>\n<\/body>\n<\/html>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Generador de Equipos Aleatorios Generador de Equipos Aleatorios Organiza tus grupos de trabajo de forma r\u00e1pida y justa. 1. Selecciona la cantidad de equipos: 2 Equipos3 Equipos4 Equipos5 Equipos6 Equipos7 Equipos8 Equipos 2. Ingresa los nombres (uno por l\u00ednea): Por favor, ingresa al menos un nombre. Generar Equipos Mezclando integrantes&#8230; Generar Nuevos Equipos<\/p>\n","protected":false},"author":2,"featured_media":2375,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"facebook_2925173004293474_260002561269783":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","site-transparent-header":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[18],"tags":[],"class_list":["post-2372","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consejo-tecnico-escolar"],"_wp_page_template":null,"_wp_attachment_metadata":null,"_wp_attached_file":null,"_wp_attachment_context":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_wp_attachment_backup_sizes":null,"_wpas_feature_enabled":null,"_wpas_is_tweetstorm":null,"_wpas_mess":null,"_thumbnail_id":"2375","_wpas_done_all":"1","_wp_attachment_image_alt":null,"_oembed_953a61d5df8c3836a556d8d39803bf3c":null,"_oembed_time_953a61d5df8c3836a556d8d39803bf3c":null,"_wpas_skip_28712532":null,"_oembed_4a4bb227a6bbfc1286813ba1a53587ee":null,"_oembed_time_4a4bb227a6bbfc1286813ba1a53587ee":null,"_oembed_b65f030d0e4fe78a9f2aa20ef42c0e18":null,"_oembed_time_b65f030d0e4fe78a9f2aa20ef42c0e18":null,"_oembed_f6a64b4156635a0bc55b4c4bbc364650":null,"_oembed_time_f6a64b4156635a0bc55b4c4bbc364650":null,"_oembed_a22c2ada96445daed271c1dcee845f2b":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_menu_item_orphaned":null,"_wp_attachment_custom_header_last_used_cozibee":null,"_wp_attachment_is_custom_header":null,"_wp_attachment_is_custom_background":null,"_oembed_0fce63d053e1c840acdaf9784da4fc8b":null,"_oembed_time_0fce63d053e1c840acdaf9784da4fc8b":null,"_oembed_868a97a741381805139bcba376ff0625":null,"_oembed_time_868a97a741381805139bcba376ff0625":null,"_oembed_e579f188e1e4ab796dbace1957f8fbde":null,"_oembed_time_e579f188e1e4ab796dbace1957f8fbde":null,"_oembed_3aa5ccda408558f57932bf67f990a691":null,"_oembed_time_3aa5ccda408558f57932bf67f990a691":null,"_oembed_c2491fa9a9f5cdc93a304b975729ea15":null,"_oembed_time_c2491fa9a9f5cdc93a304b975729ea15":null,"_oembed_5d0a0fbc199d09fc11425162a9492c14":null,"_oembed_time_5d0a0fbc199d09fc11425162a9492c14":null,"_oembed_ba589a8b01cad13e4e566584052cb77a":null,"_oembed_time_ba589a8b01cad13e4e566584052cb77a":null,"_oembed_30669573d2b5e70ea857547628b634da":null,"_oembed_time_30669573d2b5e70ea857547628b634da":null,"_oembed_c6c454880f54c026403650bfc764daa8":null,"_oembed_time_c6c454880f54c026403650bfc764daa8":null,"_oembed_3d570b3811c404e494d6a02452207e66":null,"_oembed_time_3d570b3811c404e494d6a02452207e66":null,"_oembed_4e4c64d45329ac65f2ecba3f1098156b":null,"_oembed_time_4e4c64d45329ac65f2ecba3f1098156b":null,"_oembed_26ea7d7572a89a903bdcc029628ad5b2":null,"_oembed_time_26ea7d7572a89a903bdcc029628ad5b2":null,"_oembed_a7e95c0362f8dba8c04afb28dfeba5c4":null,"_oembed_time_a7e95c0362f8dba8c04afb28dfeba5c4":null,"_oembed_e5b9ced47b1732d259a5d4aeddd9f86b":null,"_oembed_time_e5b9ced47b1732d259a5d4aeddd9f86b":null,"_oembed_5b4c9d950ab8f0e6ee36bf1d03b97fa2":null,"_oembed_time_5b4c9d950ab8f0e6ee36bf1d03b97fa2":null,"_oembed_b49cdec356d7242bb8a49d9c9f01bc06":null,"_oembed_time_b49cdec356d7242bb8a49d9c9f01bc06":null,"_oembed_304f4ae101daf3ec11ce08903a61e1a1":null,"_oembed_time_304f4ae101daf3ec11ce08903a61e1a1":null,"_oembed_83e577f7d02d35ed039e43ba03038e30":null,"_oembed_time_83e577f7d02d35ed039e43ba03038e30":null,"_oembed_ac101d4e0aa9c1e0993fbaffe57d0fc5":null,"_oembed_time_ac101d4e0aa9c1e0993fbaffe57d0fc5":null,"_oembed_b8411cad4c872303f3f389c0550cfc51":null,"_oembed_time_b8411cad4c872303f3f389c0550cfc51":null,"_oembed_a21a162044b7b51413df6eac11ad958f":null,"_oembed_time_a21a162044b7b51413df6eac11ad958f":null,"_oembed_fba64fc3e6e979fc9c4aa99f0afe7d79":null,"_oembed_time_fba64fc3e6e979fc9c4aa99f0afe7d79":null,"_oembed_76d1c5765b2bc8197eba722fa7cc4244":null,"_oembed_time_76d1c5765b2bc8197eba722fa7cc4244":null,"_oembed_1af62fd759021cc0b68eaa004effd6d5":null,"_oembed_time_1af62fd759021cc0b68eaa004effd6d5":null,"_oembed_2aeeb91d42a24ab084a9cb37fb3b67f1":null,"_oembed_time_2aeeb91d42a24ab084a9cb37fb3b67f1":null,"_oembed_a20b7becc3d5a90f749947d58de23463":null,"_oembed_time_a20b7becc3d5a90f749947d58de23463":null,"_oembed_8796659fa365a11c137d85033d2e7b2c":null,"_jetpack_post_was_ever_published":null,"_jetpack_newsletter_access":null,"_jetpack_newsletter_tier_id":null,"_oembed_5e6fd9549f847190c195ab03255f6ae1":null,"_oembed_554eaf78a040947b2cdd90835d8cd276":null,"_oembed_time_554eaf78a040947b2cdd90835d8cd276":null,"_oembed_7271f435f5fb97d3120864ad34adb6c3":null,"_oembed_time_7271f435f5fb97d3120864ad34adb6c3":null,"_oembed_1fa2fbab810b9b626ad7cc0992ad6aaf":null,"_oembed_time_1fa2fbab810b9b626ad7cc0992ad6aaf":null,"_oembed_64d2135e548c4ce907bc35b61950835b":null,"_oembed_time_64d2135e548c4ce907bc35b61950835b":null,"_oembed_b06e05f997fbefc05e29757e11f828c6":null,"_oembed_time_b06e05f997fbefc05e29757e11f828c6":null,"_oembed_8ce37cc1b7e4dd2fc03872862421313f":null,"_oembed_time_8ce37cc1b7e4dd2fc03872862421313f":null,"_oembed_2158468bd8321669930d1e9681ce2bef":null,"_oembed_time_2158468bd8321669930d1e9681ce2bef":null,"_oembed_ce1b323d791120f5404dbf8cceb57366":null,"_oembed_time_ce1b323d791120f5404dbf8cceb57366":null,"_oembed_21a8242fe71dbeda6363d1536af838e8":null,"_oembed_time_21a8242fe71dbeda6363d1536af838e8":null,"_oembed_eb56dfdacfea2f082dd29cd9084ec889":null,"_wp_old_slug":null,"_oembed_630acfcb06b9afa6ddad824949b84793":null,"_pingme":null,"_encloseme":null,"_oembed_5a7c9eb8a81530ecf9e4e972c23ba731":null,"_oembed_f2fd7c802a7374c43ea88d0097870f1b":null,"_oembed_time_f2fd7c802a7374c43ea88d0097870f1b":null,"_oembed_time_5a7c9eb8a81530ecf9e4e972c23ba731":null,"_oembed_6a91eb9d3d56701e2bf3c9752e96e963":null,"_oembed_c420e9b8b4ecc62da9e432b3ac6a775c":null,"_oembed_725a018f8f3c315b019b5027147af17c":null,"_oembed_fbaa8b858f2c2b8bd17bd9f041381fd0":null,"_oembed_b1333ac22358b86e275b521bfe898d6c":null,"_oembed_81a8344c3ba22ed7e81d42d93e039c83":null,"_oembed_e8b758a02e7baa37faf81b4537e12296":null,"_oembed_f176d255aad93b4de0d42f54076770bd":null,"_oembed_b39b53a24b9c3ddc8f4d0334bdf02260":null,"_oembed_172d3f081ea3bc54cd6f27cf98769eac":null,"_oembed_a121a60eb9062ad69062a9659affb999":null,"_wp_desired_post_slug":null,"_wp_attachment_custom_header_last_used_blogstream":null,"_edit_lock":"1758815752:2","_last_editor_used_jetpack":null,"_jetpack_related_posts_cache":null,"_edit_last":"2","_wp_trash_meta_status":null,"_wp_trash_meta_time":null,"footnotes":null,"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/posts\/2372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/comments?post=2372"}],"version-history":[{"count":3,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/posts\/2372\/revisions"}],"predecessor-version":[{"id":2376,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/posts\/2372\/revisions\/2376"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/media\/2375"}],"wp:attachment":[{"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/media?parent=2372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/categories?post=2372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ddmx.cc\/blog\/wp-json\/wp\/v2\/tags?post=2372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}