Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 52 additions & 23 deletions LearnIA/app/routes/_main.explora.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,61 @@ import ExploraCollapsibleSemestre from "../components/ExploraCollapsibleSemestre
import ExploraCollapsibleMateria from "../components/ExploraCollapsibleMateria";

function explora() {
const courses = [
{
"semesters": [
{
"name": "Semestre 2",
"subjects": ["Programación Orientada a Objetos", "Modelación de sistemas electromagnéticos", "Biología computacional"]
},
{
"name": "Semestre 3",
"subjects": ["Algoritmos fundamentales", "Internet de las cosas"]
}
]
}
];

return (
<div style={{ marginLeft: "400px" }}>
<TitleWithImages title="Explora" />
<ExploraCollapsibleCarrera title="ITC">
<div className="collapsible1-content">
//Estado de inscripción
const [enrollmentStatus, setEnrollmentStatus] = useState({});

<ExploraCollapsibleSemestre title="Semestre">
<div className="collapsible2-content">
//Cambiar al estado anterior cada vez que se presiona el botón (Inscrito / No inscrito)
const handleEnrollmentClick = (subject) => {
setEnrollmentStatus((prevStatus) => ({
...prevStatus,
[subject]: !prevStatus[subject]
}));
};

<ExploraCollapsibleMateria title="Materia">
<div className="collapsible3-content">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam
elementum faucibus mollis. Mauris vel lacinia libero. Proin
luctus semper sem, ac posuere velit.
</p>
<button className="btn green">Inscribirse</button>
</div>
</ExploraCollapsibleMateria>
</div>
</ExploraCollapsibleSemestre>
</div>
</ExploraCollapsibleCarrera>
</div>
);
return (
<div style={{ marginLeft: "400px" }}>
<TitleWithImages title="Explora" />
<ExploraCollapsibleCarrera title="ITC">
<div className="collapsible1-content">
{courses[0].semesters.map((semester, index) => (
<ExploraCollapsibleSemestre key={index} title={semester.name}>
<div className="collapsible2-content">
{semester.subjects.map((subject, subIndex) => (
<ExploraCollapsibleMateria key={subIndex} title={subject}>
<div className="collapsible3-content">
<p>{subject}</p>
<button
//Dependiendo del status de inscripción el botón es verde o rojo y se cambia el texto
className={`btn ${enrollmentStatus[subject] ? "red" : "green"}`}
onClick={() => handleEnrollmentClick(subject)}
>
{enrollmentStatus[subject] ? "Dar de baja" : "Inscribirse"}
</button>
</div>
</ExploraCollapsibleMateria>
))}
</div>
</ExploraCollapsibleSemestre>
))}
</div>
</ExploraCollapsibleCarrera>
</div>
);
}

export default explora;
1 change: 1 addition & 0 deletions LearnIA/app/services/auth.server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Authenticator } from "remix-auth";
import { GoogleStrategy, SocialsProvider } from "remix-auth-socials";
import { sessionStorage } from "../services/session.server";
import { config } from "dotenv";
import prisma from "./prisma/prisma.js";

config();

Expand Down
18 changes: 10 additions & 8 deletions LearnIA/app/styles/ExploraCollapsibleSection.css
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
cursor: pointer;
padding: 18px;
width: calc(100% - 80px);
border: 2px solid #132941;
border: 1.5px solid #132941;
text-align: left;
outline: none;
font-size: 25px;
Expand Down Expand Up @@ -134,7 +134,7 @@
padding: 0px 0px;
display: none;
overflow: hidden;
background-color: #132941;
background-color: white;
border-radius: 0;
margin: 0 40px;
transition: border-radius 0.3s ease;
Expand Down Expand Up @@ -162,12 +162,13 @@
color: #132941;
cursor: pointer;
padding: 10px 18px;
padding-left: 30px;
width: calc(100%);
border: 2px solid #132941;
border: 1.5px solid #132941;
text-align: left;
outline: none;
font-size: 21px;
font-weight: 500;
font-size: 18px;
font-weight: 600;
border-radius: 0px;
margin-left: 0px;
margin-right: 0px;
Expand Down Expand Up @@ -208,7 +209,7 @@
padding: 0px 0px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
background-color: white;
border-radius: 0;
margin: 0 0px;
transition: border-radius 0.3s ease;
Expand Down Expand Up @@ -237,11 +238,12 @@
color: #132941;
cursor: pointer;
padding: 5px 18px;
padding-left: 60px;
width: calc(100%);
border: 2px solid #132941;
border: 1.3333333px solid #132941;
text-align: left;
outline: none;
font-size: 21px;
font-size: 15px;
font-weight: 500;
border-radius: 0px;
margin-left: 0px;
Expand Down
75 changes: 44 additions & 31 deletions LearnIA/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -8,68 +8,72 @@ datasource db {
}

model Carrera {
idCarrera Int @id @unique(map: "idCarrera_UNIQUE") @default(autoincrement())
nombre String? @unique(map: "nombre_UNIQUE") @db.VarChar(45)
escuela String? @unique(map: "escuela_UNIQUE") @db.VarChar(45)
materias String? @unique(map: "materias_UNIQUE") @db.VarChar(45)
estudiante Estudiante[]
materia Materia[]
idCarrera Int @id @unique(map: "idCarrera_UNIQUE") @default(autoincrement())
siglasCarrera String? @db.VarChar(45)
escuela String? @db.VarChar(45)
nombre String? @db.VarChar(45)
estudiante Estudiante[]
materia Materia[]
}

model Curso {
idCurso Int @id @unique(map: "idCurso_UNIQUE") @default(autoincrement())
idEstudiante Int
idMateria Int
temasCompletados String? @db.VarChar(45)
temasCursar String? @db.VarChar(45)
plazo String? @db.VarChar(45)
idEvaluaciones Int @unique(map: "idEvaluaciones_UNIQUE")
estudiante Estudiante @relation(fields: [idEstudiante], references: [idEstudiante], onDelete: Cascade, map: "fk_Curso_Estudiante")
evaluaciones Evaluaciones @relation(fields: [idEvaluaciones], references: [idEvaluaciones], onDelete: Cascade, map: "fk_Curso_Evaluaciones")
materia Materia @relation(fields: [idMateria], references: [idMateria], onDelete: Cascade, map: "fk_Curso_Materia")
idCurso Int @id @unique(map: "idCurso_UNIQUE") @default(autoincrement())
idEstudiante Int
idMateria Int
plazo String? @db.VarChar(45)
idEvaluaciones Int @unique(map: "idEvaluaciones_UNIQUE")
descripcion String? @db.VarChar(45)
completado String? @db.VarChar(45)
proyectosRec String? @db.VarChar(45)
estudiante Estudiante @relation(fields: [idEstudiante], references: [idEstudiante], onDelete: Cascade, map: "fk_Curso_Estudiante")
evaluaciones Evaluaciones @relation(fields: [idEvaluaciones], references: [idEvaluaciones], onDelete: Cascade, map: "fk_Curso_Evaluaciones")
materia Materia @relation(fields: [idMateria], references: [idMateria], onDelete: Cascade, map: "fk_Curso_Materia")
Tema Tema[]

@@index([idEstudiante], map: "fk_Curso_Estudiante")
@@index([idMateria], map: "idMateria_idx")
}

model Estudiante {
idEstudiante Int @id @unique(map: "idEstudiante_UNIQUE") @default(autoincrement())
nombre String @db.VarChar(45)
idCarrera Int?
correo String @unique(map: "correo_UNIQUE") @db.VarChar(45)
cursosCompletados String? @db.VarChar(45)
cursosInscritos String? @db.VarChar(45)
curso Curso[]
carrera Carrera? @relation(fields: [idCarrera], references: [idCarrera], onDelete: Cascade, map: "idCarrera")
idEstudiante Int @id @unique(map: "idEstudiante_UNIQUE") @default(autoincrement())
nombre String @db.VarChar(45)
idCarrera Int?
correo String @unique(map: "correo_UNIQUE") @db.VarChar(45)
curso Curso[]
carrera Carrera? @relation(fields: [idCarrera], references: [idCarrera], onDelete: Cascade, map: "idCarrera")
Evaluaciones Evaluaciones[]

@@index([idCarrera], map: "idCarrera_idx")
}

model Evaluaciones {
idEvaluaciones Int @id @unique(map: "idEvaluaciones_UNIQUE")
idEvaluaciones Int @id @unique(map: "idEvaluaciones_UNIQUE")
quizInicial Int
quiz1 Int?
quiz2 Int?
final Int?
idEstudiante Int
Curso Curso?
quiz_Evaluaciones_finalToQuiz Quiz? @relation("Evaluaciones_finalToQuiz", fields: [final], references: [idQuiz], onDelete: Cascade, map: "final")
quiz_Evaluaciones_quiz1ToQuiz Quiz? @relation("Evaluaciones_quiz1ToQuiz", fields: [quiz1], references: [idQuiz], onDelete: Cascade, map: "quiz1")
quiz_Evaluaciones_quiz2ToQuiz Quiz? @relation("Evaluaciones_quiz2ToQuiz", fields: [quiz2], references: [idQuiz], onDelete: Cascade, map: "quiz2")
quiz_Evaluaciones_quizInicialToQuiz Quiz @relation("Evaluaciones_quizInicialToQuiz", fields: [quizInicial], references: [idQuiz], onDelete: Cascade, map: "quizInicial")
quiz_Evaluaciones_finalToQuiz Quiz? @relation("Evaluaciones_finalToQuiz", fields: [final], references: [idQuiz], onDelete: NoAction, onUpdate: NoAction, map: "final")
Estudiante Estudiante @relation(fields: [idEstudiante], references: [idEstudiante], onDelete: NoAction, onUpdate: NoAction, map: "idEstudiante")
quiz_Evaluaciones_quiz1ToQuiz Quiz? @relation("Evaluaciones_quiz1ToQuiz", fields: [quiz1], references: [idQuiz], onDelete: NoAction, onUpdate: NoAction, map: "quiz1")
quiz_Evaluaciones_quiz2ToQuiz Quiz? @relation("Evaluaciones_quiz2ToQuiz", fields: [quiz2], references: [idQuiz], onDelete: NoAction, onUpdate: NoAction, map: "quiz2")
quiz_Evaluaciones_quizInicialToQuiz Quiz @relation("Evaluaciones_quizInicialToQuiz", fields: [quizInicial], references: [idQuiz], onDelete: NoAction, onUpdate: NoAction, map: "quizInicial")

@@index([final], map: "final_idx")
@@index([final, idEvaluaciones], map: "final_idx")
@@index([quiz1], map: "quiz1_idx")
@@index([quiz2], map: "quiz2_idx")
@@index([quizInicial], map: "quizInicial_idx")
@@index([idEstudiante], map: "idEstudiante_idx")
}

model Materia {
idMateria Int @id @unique(map: "idMateria_UNIQUE")
idCarrera Int?
nombre String? @db.VarChar(45)
temas String? @db.VarChar(45)
semestre Int?
idMateriaTec String @unique(map: "idMateriaTec_UNIQUE") @db.VarChar(45)
objetivos String? @db.VarChar(45)
curso Curso[]
carrera Carrera? @relation(fields: [idCarrera], references: [idCarrera], onDelete: Cascade, map: "fk_Materia_Carrera")

Expand All @@ -86,3 +90,12 @@ model Quiz {
evaluaciones_Evaluaciones_quiz2ToQuiz Evaluaciones[] @relation("Evaluaciones_quiz2ToQuiz")
evaluaciones_Evaluaciones_quizInicialToQuiz Evaluaciones[] @relation("Evaluaciones_quizInicialToQuiz")
}

model Tema {
idTema Int @id
idCurso Int?
completado String? @db.VarChar(45)
Curso Curso? @relation(fields: [idCurso], references: [idCurso], onDelete: NoAction, onUpdate: NoAction, map: "idCurso")

@@index([idCurso], map: "idCurso_idx")
}
13 changes: 13 additions & 0 deletions LearnIA/vite.config.js.timestamp-1717282219478-1e339005fe794.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// vite.config.js
import { vitePlugin as remix } from "file:///C:/Users/akzm2/Documents/Universidad%20TEC/Cuarto%20Semestre/LearnIA/LearnIA/LearnIA/node_modules/@remix-run/dev/dist/index.js";
import { defineConfig } from "file:///C:/Users/akzm2/Documents/Universidad%20TEC/Cuarto%20Semestre/LearnIA/LearnIA/LearnIA/node_modules/vite/dist/node/index.js";
var vite_config_default = defineConfig({
plugins: [remix()],
test: {
// ...
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFxha3ptMlxcXFxEb2N1bWVudHNcXFxcVW5pdmVyc2lkYWQgVEVDXFxcXEN1YXJ0byBTZW1lc3RyZVxcXFxMZWFybklBXFxcXExlYXJuSUFcXFxcTGVhcm5JQVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcYWt6bTJcXFxcRG9jdW1lbnRzXFxcXFVuaXZlcnNpZGFkIFRFQ1xcXFxDdWFydG8gU2VtZXN0cmVcXFxcTGVhcm5JQVxcXFxMZWFybklBXFxcXExlYXJuSUFcXFxcdml0ZS5jb25maWcuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L1VzZXJzL2Frem0yL0RvY3VtZW50cy9Vbml2ZXJzaWRhZCUyMFRFQy9DdWFydG8lMjBTZW1lc3RyZS9MZWFybklBL0xlYXJuSUEvTGVhcm5JQS92aXRlLmNvbmZpZy5qc1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cclxuaW1wb3J0IHsgdml0ZVBsdWdpbiBhcyByZW1peCB9IGZyb20gXCJAcmVtaXgtcnVuL2RldlwiO1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcclxuXHRwbHVnaW5zOiBbcmVtaXgoKV0sXHJcblx0dGVzdDoge1xyXG5cdFx0Ly8gLi4uXHJcblx0fSxcclxufSk7XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFDQSxTQUFTLGNBQWMsYUFBYTtBQUNwQyxTQUFTLG9CQUFvQjtBQUU3QixJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMzQixTQUFTLENBQUMsTUFBTSxDQUFDO0FBQUEsRUFDakIsTUFBTTtBQUFBO0FBQUEsRUFFTjtBQUNELENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==