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