diff --git a/uniEmpleos/load-test.js b/uniEmpleos/load-test.js new file mode 100644 index 00000000..afe3073e --- /dev/null +++ b/uniEmpleos/load-test.js @@ -0,0 +1,64 @@ +import http from "k6/http" +import { sleep, check } from "k6" + +export const options = { + scenarios: { + low_load: { + executor: "constant-vus", + vus: 100, + duration: "1m", // por ejemplo, 1 minuto + gracefulStop: "30s", + }, + medium_load: { + executor: "constant-vus", + vus: 200, + duration: "1m", // por ejemplo, 1 minuto + startTime: "2m", // inicia después de que el primer escenario ha terminado + gracefulStop: "30s", + }, + high_load: { + executor: "constant-vus", + vus: 400, + duration: "1m", // por ejemplo, 1 minuto + startTime: "3m", // inicia después de que el segundo escenario ha terminado + gracefulStop: "30s", + }, + }, +} + +function login() { + const res = http.get("https://sage-palmier-936be2.netlify.app/login") + check(res, { "status was 200": (r) => r.status === 200 }) +} + +function signup() { + const res = http.get("https://sage-palmier-936be2.netlify.app/signup") + check(res, { "status was 200": (r) => r.status === 200 }) +} + +function homepage() { + const res = http.get("https://sage-palmier-936be2.netlify.app/") + check(res, { "status was 200": (r) => r.status === 200 }) +} + +export default function () { + // Genera un número aleatorio entre 1 y 3 + const randomPage = Math.floor(Math.random() * 3) + 1 + + switch (randomPage) { + case 1: + login() + break + case 2: + signup() + break + case 3: + homepage() + break + default: + homepage() + break + } + + sleep(1) +} diff --git a/uniEmpleos/src/components/InfoStudent/InfoStudent.module.css b/uniEmpleos/src/components/InfoStudent/InfoStudent.module.css index 544638f1..a47c6408 100644 --- a/uniEmpleos/src/components/InfoStudent/InfoStudent.module.css +++ b/uniEmpleos/src/components/InfoStudent/InfoStudent.module.css @@ -46,8 +46,6 @@ .pfpContainer { width: calc(25% - 20px); - max-width: 80px; - max-height: 80px; display: flex; align-items: center; } @@ -55,8 +53,8 @@ .pfp { border-radius: 10%; background-color: transparent; - width: 100%; - height: 100%; + width: 80px; + height: 80px; object-fit: cover; object-position: center; } diff --git a/uniEmpleos/src/components/Loader/Loader.jsx b/uniEmpleos/src/components/Loader/Loader.jsx index d8cd61d3..e81e40b4 100644 --- a/uniEmpleos/src/components/Loader/Loader.jsx +++ b/uniEmpleos/src/components/Loader/Loader.jsx @@ -21,15 +21,10 @@ const Loader = ({ size }) => { ] return ( -
- - - - - +
+
+
+
) } diff --git a/uniEmpleos/src/components/Loader/Loader.module.css b/uniEmpleos/src/components/Loader/Loader.module.css index 3b7c6697..41bb12a1 100644 --- a/uniEmpleos/src/components/Loader/Loader.module.css +++ b/uniEmpleos/src/components/Loader/Loader.module.css @@ -1,35 +1,103 @@ -.loader { - display: inline-flex; - align-items: center; - column-gap: 5px; - margin: 50px; -} -.loader__bar { +.threebody { + --uib-size: 50px; + --uib-speed: 0.8s; + --uib-color: #5D3FD3; + position: relative; display: inline-block; - width: 15%; - height: 30%; - background-color: #000; - opacity: .5; - border-radius: 10px; - animation: scale-up 1000ms - var(--d) linear infinite; -} - -.loader__bar:nth-child(even) { - height: 70%; -} - -.loader__bar:nth-child(3) { + height: var(--uib-size); + width: var(--uib-size); + animation: spin78236 calc(var(--uib-speed) * 2.5) infinite linear; + } + + .threebody__dot { + position: absolute; height: 100%; -} - -@keyframes scale-up { - 25% { - opacity: 1; - scale: 1 1.5; + width: 30%; + } + + .threebody__dot:after { + content: ''; + position: absolute; + height: 0%; + width: 100%; + padding-bottom: 100%; + background-color: var(--uib-color); + border-radius: 50%; + } + + .threebody__dot:nth-child(1) { + bottom: 5%; + left: 0; + transform: rotate(60deg); + transform-origin: 50% 85%; + } + + .threebody__dot:nth-child(1)::after { + bottom: 0; + left: 0; + animation: wobble1 var(--uib-speed) infinite ease-in-out; + animation-delay: calc(var(--uib-speed) * -0.3); + } + + .threebody__dot:nth-child(2) { + bottom: 5%; + right: 0; + transform: rotate(-60deg); + transform-origin: 50% 85%; + } + + .threebody__dot:nth-child(2)::after { + bottom: 0; + left: 0; + animation: wobble1 var(--uib-speed) infinite + calc(var(--uib-speed) * -0.15) ease-in-out; + } + + .threebody__dot:nth-child(3) { + bottom: -5%; + left: 0; + transform: translateX(116.666%); + } + + .threebody__dot:nth-child(3)::after { + top: 0; + left: 0; + animation: wobble2 var(--uib-speed) infinite ease-in-out; + } + + @keyframes spin78236 { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } + } + + @keyframes wobble1 { + 0%, + 100% { + transform: translateY(0%) scale(1); + opacity: 1; + } + + 50% { + transform: translateY(-66%) scale(0.65); + opacity: 0.8; + } + } + + @keyframes wobble2 { + 0%, + 100% { + transform: translateY(0%) scale(1); + opacity: 1; } + 50% { - scale: 1; + transform: translateY(66%) scale(0.65); + opacity: 0.8; } -} \ No newline at end of file + } \ No newline at end of file diff --git a/uniEmpleos/src/components/PublicProfile/PublicProfileAdmin.jsx b/uniEmpleos/src/components/PublicProfile/PublicProfileAdmin.jsx index 408dbfbe..f779eafa 100644 --- a/uniEmpleos/src/components/PublicProfile/PublicProfileAdmin.jsx +++ b/uniEmpleos/src/components/PublicProfile/PublicProfileAdmin.jsx @@ -1,8 +1,9 @@ import React from "react" -import style from "./PublicProfileAdmin.module.css" import { BiUser } from "react-icons/bi" import { HiOutlineMailOpen } from "react-icons/hi" +import style from "./PublicProfileAdmin.module.css" import Button from "../Button/Button" + const PublicProfileAdmin = ({ name, lastName, @@ -33,11 +34,11 @@ const PublicProfileAdmin = ({
diff --git a/uniEmpleos/src/pages/PublicProfileAdminEnterprise/PublicProfileAdminEnterprise.module.css b/uniEmpleos/src/pages/PublicProfileAdminEnterprise/PublicProfileAdminEnterprise.module.css index 1c5a6a93..a1bf7ddd 100644 --- a/uniEmpleos/src/pages/PublicProfileAdminEnterprise/PublicProfileAdminEnterprise.module.css +++ b/uniEmpleos/src/pages/PublicProfileAdminEnterprise/PublicProfileAdminEnterprise.module.css @@ -5,7 +5,10 @@ .infoProfileContainer { width: 100%; - height: 40%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; } .postulationContainer { @@ -25,8 +28,24 @@ gap: 20px; } +.infoEnterpriseContainer { + width: 100%; + display: flex; + flex-direction: column; + gap: 20px; + align-items: center; + justify-content: center; + padding-top: 10%; +} + .title { color: #333; text-align: center; margin: 0 0 60px 0; +} + +@media screen and (max-width: 768px) { + .title{ + margin: 10%; + } } \ No newline at end of file diff --git a/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.jsx b/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.jsx index 30c1a1a9..e02aa3a8 100644 --- a/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.jsx +++ b/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.jsx @@ -1,11 +1,11 @@ import React, { useState, useEffect } from "react" +import { BiArrowBack } from "react-icons/bi" import style from "./PublicProfileAdminStudent.module.css" import PublicProfileAdmin from "../../components/PublicProfile/PublicProfileAdmin" import InfoTab from "../../components/InfoTab/InfoTab" import useApi from "../../Hooks/useApi" import Popup from "../../components/Popup/Popup" import { navigate } from "../../store" -import { BiArrowBack } from "react-icons/bi" import Loader from "../../components/Loader/Loader" import API_URL from "../../api" @@ -139,46 +139,46 @@ const PublicProfileAdminStudent = ({ id }) => { onClick={() => navigate("/profileadminstudent")} />
- {loadingInfoStudent && studentInfo ? ( - + {loadingInfoStudent && studentInfo && loadingPostulations ? ( + ) : ( - - )} -
-

Postulaciones del estudiante

-
- {loadingPostulations ? ( - - ) : postulations.length ? ( - postulations.map((postulation) => ( - { - handleShowMore( - postulation.id_oferta, - postulation.id_postulacion - ) - }} +
+ - )) - ) : ( -

No hay postulaciones

+

Postulaciones del estudiante

+
+ {postulations.length ? ( + postulations.map((postulation) => ( + { + handleShowMore( + postulation.id_oferta, + postulation.id_postulacion + ) + }} + /> + )) + ) : ( +

No hay postulaciones

+ )} +
+
)}
diff --git a/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.module.css b/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.module.css index efc4b5e2..90395cf9 100644 --- a/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.module.css +++ b/uniEmpleos/src/pages/PublicProfileAdminStudent/PublicProfileAdminStudent.module.css @@ -1,11 +1,15 @@ .mainContainer { width: 100%; height: 100%; + margin: 0; } .infoProfileContainer { width: 100%; - height: 40%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; } .postulationContainer { @@ -29,4 +33,14 @@ color: #333; text-align: center; margin: 0 0 60px 0; +} + +.infoStudentContainer{ + width: 100%; + display: flex; + flex-direction: column; + gap: 20px; + align-items: center; + justify-content: center; + padding-top: 10%; } \ No newline at end of file