Giter VIP home page Giter VIP logo

fiuba-plan's Introduction

Organizador de horarios de la Facultad de Ingenieria


Este proyecto apunta a una manera más facil de visualizar los horarios de cursada de la FIUBA. La idea es que no dependa de ningun servicio externo para conseguir los horarios cada cuatrimestre (porque no existe ninguno confiable que sea actualizado año a año), y los horarios sean cargados manualmente por el usuario que los puede obtener de su SIU (incluso, en una de esas funciona para SIUs de otras facultades de la UBA).

Desarrollo

Para agregar un feature o fixear un issue hay que clonar el repositorio, instalar las dependencias con npm install y después correr la aplicación con npm start. En localhost:3000/ va a estar corriendo la aplicación constantemente, y toda modificación que se haga al código se va a ver reflejada en la página.

Con npm test se pueden correr los tests del parser del SIU, para agregar tests de distintos SIUs podés agregar en siu-raw el texto de tu SIU, y en siu-json el objeto que da el parser luego de procesar el texto del SIU que pegas en el cuadro de texto (en la consola de desarrollo se imprime).

Una vez terminados los cambios, con solo hacer un PR basta (porque la aplicación se compila automáticamente con cada push a master).

Si tenés algún problema con el parser podés armar un issue con lo que intentaste pegar en el cuadro de texto.

fiuba-plan's People

Contributors

fdelmazo avatar github-actions[bot] avatar jdsanto avatar komod0 avatar lopezac avatar maleriandro avatar nicomatex avatar web-flow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fiuba-plan's Issues

Horarios Extracurriculares

Tener la opción de poder agregar horarios extracurriculares semanales para deportes, trabajo, estudios fuera de FIUBA, etc... Estaría bueno que sea algo que le pones un nombre, elegís la banda horaria y los días que queres que aparezca.

Problemas de CI

  • las últimas corridas estuvieron fallando
  • las 00.00 no es la mejor hora, cambiarla

Desacoplar 'data' de las materias mostradas en el drawer

En este momento hay que cachear todo el objeto 'data' porque ahi estan los booleanos que dice si mostras o no una materia en el drawer... lo cual es un asco

Habria que hacer que data siempre sea el json, y tener un objeto distinto para guardar que tenes mostrado en el drawer, y ese cachearlo. O, mejor, directamente, sacarlo de events eso

Conflicto al tener dos actividades extracurriculares iguales

Caso muy borde, pero si pones dos actividades extracurriculares, con el mismo dia y horario, como no hay identificador unico para detectarlas, solo podes cambiarle el nombre a la primera, nunca a la segunda

"Me pasó que cuando fui a poner dos actividades extracurriculares al mismo día y horario sólo le podía cambiar el nombre a una, la otra se quedaba siempre con el nombre ""Actividad O"" (O la letra que fuere), esto dentro de la tabla semanal, porque en la lista del margen sí que se cambiaba. El resto funciona todo perfecto, gracias por esta herramienta tan útil ;)"

Opcion compartir con amigo

Un poco de la mano con lo que habia comentado en su mometo de poder guardar el plan que se arma propongo que exista la opcion de compartir para poder compartirlo con compas, amigos y comparar cual es el plan de cada uno. Mas alla de ahora mandar el screen por ahi estaria bueno simplemente enviar algun tipo de link y que lo vea

Actualizar horarios antes de las 12

Viendo que recién ahora actualizaron la página de la oferta horaria, capaz se podría ejecutar prematuramente el workflow que agrega las materias, para tener un día más para organizarnos.

Distintos planes de opciones

"Holaa, queria dejar para una posible actualizacion la feature de que te cuente la cantidad de horas de cursada cargadas. Es una boludes pero puede llegar a quedar piola. Muy bueno todo lo que haces, mil gracias
Saludoos"

"Buenas, primero te felicito por tu laburo que es impresionante y una gran ayuda a la comunidad fiubense.
Ahora la sugerencia: Estaria bueno incluir unas ""hojas"" tipo excel que te permiten armarte ""Plan A"", ""Plan B"", etc.
Saludos y gracias por todo!"

estaría bueno un sistema de opciones, tipo esta es mi 1° opción y si no puedo anotarme con el tengo esta otra planilla de horarios disponible.

Tal vez se podría armar un sistema de tabs para armar distintos planes de carreras. Y despues on hover en cada tab te dice cuantas horas de cursada/materias/creditos(??) estas cursando

No deberia ser tan jodido de implementar: le pones un atributo de tab a cada evento, y despues en el calendario filtras los eventos segun la tab de la pagina.

UBA-Plan

Hola @FdelMazo este proyecto siempre me parecio copado, y ahora que funciona con el SIU Guarani, creo que ahora se puede extender a toda la UBA, asi puede ayudar a mucha gente mas.

Aca consegui el siu-usuario-exactas-computacion-primer-cuatri.txt, texto de la pagina de una persona (entre en su siu-guarani exactas y copie todo) (cambie su nombre a "Nombre Falso" linea 4) que esta cursando el primer año (termino el cbc en 2023) de Ciencias de la Computacion en la facultad de exactas, y funciona hasta la parte de importar horarios, reconoce los periodos, luego cuando queres agregar una materia crashea.

Un detalle seria poner nuevas instrucciones, por ejemplo la pagina de oferta de comisiones de FIUBA y Exactas tienen distinto dominio y formato.

Remove Class Individually Button

Un botoncito (o algo similar) abajo a la derecha de cada evento para remover ese evento particular (y no todos los eventos o clases del curso. Solo esa)

Horario de 9119 Economia para electronicos

Hola aviso que el horario esta mal en el siu y en el organizador. Los profesores avisaron que seguirá siendo los martes a la misma hora como viene siendo hace varios cuatrimestres.
Saludos

Actualizacion 1C 2023

Hola Fede, como esatas? Me parece que no funciona mas la pagina ofertahorariafiuba. No se bien como es el tema de la actualizacion de catedras pero te avisaba por las dudas.

Gran trabajo el tuyo, abrazo!

Problemas de scroll?

Dos comentarios que no estoy pudiendo replicar

"Hola Fede, o equipo de Fede, te quiero comentar una situación, a la hora de hacer mi horario puse algebra 2, analisis matematico 2, y algoritmo y programación 1, con el filtro de la carrera de ingenieria en informatica.
El problema es que cuando quería elegir las catedras de algebra y/o analisis queria ir para abajo, pero hay un punto en el que no me deja bajar mas, asi que tengo que bajar la otra barrita, pero, como uso touchpad, cuando le hago clic se me cierran las diferentes cátedras. Ahora voy a probarlo con mouse, pero se agradecería que te fijases, muchisimas gracias por tus servicios, nos salvas la vida, vales mucho"

"hola , perdon el boton para bajar (en el momento que seleccione las materias y quiero ver en la parte izquierda no me funciona el cursor para bajar)"


Tal vez hay que mostrar explicitamente el scrollbar, para ser mas obvios?

Buscar materias por dia de la semana

Hola Fede, como va?
Una funcionalidad que me parece que resultaria util agregar, es que podamos buscar todas las materias que se cursan un Lunes, un Martes, etc. Es decir buscar las materias disponibles en ese dia, esto permitiria que cuando queremos llenar algun espacio en blanco de algun dia de la semana sea mas facil hacerlo.
Hoy en dia lo que me pasa, es que cuando quiero intentar agregar una materia un Martes (por ejemplo) tengo que ir probando materia por materia para llenar ese espacio y resultaria mas facil (creo yo) de alguna forma clickear en "Martes" y ver todos los cursos que tenes disponible para ese dia de la semana.

Avisame que pensas
Abrazo

Agregar support de teclado

Estaría bueno que tambien se puedan seleccionar los elementos de los dropdowns con el teclado (las flechitas, space y enter)

Deprecar ofertahoraria

FIUBA cada vez le da menos bola a mantener actualizado ofertahoraria, lo que hace que sea cada vez mas lio tener al dia el fiuba plan cuatrimestre a cuatrimestre. Ahora que se pueden usar los horarios del SIU, hay que hacer que esa sea la funcionalidad principal del programa y listo.

Sacar todo lo que sea codigo referente a tener dos fuentes distintas de horarios, hacer mas grande y facil de entender lo de los horarios del siu, hacer que si no tenes horarios puestos cuando entras te aparezca el popup, hacer que no se pueda abrir el drawer sin horarios parseados (o directo reemplazar el boton con uno que tenga el loguito del SIU), dejar que la gente mande bugs con el archivo de parseo (o al menos apuntar al mail), etc etc etc

Adapt to device height

Algo que me parece clave es que el usuario no tenga que scrollear para ver todos los eventos (así puede sacar un screenshot de toda su semana). En particular, para la mobile view.

Debería haber un max-height para cada evento (para que si tenes solo 2 eventos no te ocupe toda la pantalla), y que la altura de todo el body se adapte a el monitor/celular en el que estes, para que cuando tengas N eventos en mobile (o sean los eventos que sean en desktop), no haya overflow.

Búsqueda de materias sin unicode

El buscador de materias diferencia entre química y quimica al momento de buscar, y otras asignaturas con tilde en sus nombres. Si esto se podría modificar creo que podría mejorar mucho la experiencia en el sitio.

Integracion con el FIUBA-Map?

  • Agregar un simple link al FIUBA-Map en algun lado (y viceversa)

o

  • Pegarle a la misma DB que el fiuba map, para saber que materias ya tiene aprobada el usuario y no mostrarselas a la hora de elegir horarios

Darle amor...

Hay bocha de cosas que podrían mejorar:

  • el toast de actualizado es choto. estaria bueno que sea directo fijo arriba a la derecha un Actualizado: 2022C1 y en hover te dice la hora y te manda a ofertahoraria
  • Los bordes que delimitan los distintos cursos son horribles (esos que tienen una curva)

Get statistics of courses from DollyFiuba

Dolly has several comments and statistics that would be useful to people to know about to manage their schedule, for example:
1-One schedule has 5 points for Sirne, 4 for Cabrera and 5 for Vargas. The total points of the shedule is 14/15 => so the schedule is very nice.
2-People would like to see if the course is nice not only by the rate, but by their comments.
3- People would like to compare several plans by its points.
"Save plan 1 and compare to plan 2".

Actualizar react-big-calendar

Esta ultima semana el owner estuvo metiendo bocha de PRs, con bocha de QOL features. En algun momento hay que acordarse de acatualizar la dep!

El guardado es automático

¿Podría ser opcional en caso de que uno quiera probar nuevas combinaciones y se olvide de retroceder?

Prepararse para el apocalipsis

Eventualmente ofertahoraria va a morir y fiuba no va a ofrecer una alternativa. Hay que dejar alguna manera de cargar los datos del SIU para tener al menos una alternativa de backup y que siga sirviendo de algo la herramienta.

  • un boton al lado de donde dice "ultima actualizacion" que diga "cargar horarios del SIU" (sin iconbutton, texto entero!)
  • eso abre un toast con un textarea donde se explica como llegar al html de horarios. Se copypastea y se carga.
  • el toast explica el motivo y avisa que es experimental...
  • el toast tambien tiene un boton para copiar el archivo puesto
  • una vez cargado un archivo, se deshabilita el textinput
  • el html se parsea client side en js, en el historial del repo esta el parseo que habia antes en python, tal vez sirve verlo
  • el parseo necesita tener un loading spinner
  • el json de horarios parseados se guarda en el local storage
  • el boton pasa a ser "borrar horarios cargados" (que sigue abriendo el toast, porque necesito ver el archivo cargado)
  • si el switch es muy dificil de implementar en caliente, tal vez se puede hacer que al prenderlo se cargue el local storage y llamar a recargar la pagina y en boot la pagina se fija si esa clave existe. Lo mismo para la inversa: se limpia el local storage y se recarga la pagina forzadamente.
  • acordarse en ambos switches limpiar la data actual del usuario!

Una vez que estan los horarios cargados a mano:

  • se saca el boton de elegir carrera
  • ultima actualizacion pasa a decir "usando horarios cargados manualmente"
  • se saca el boton de permalink (porque ya no es compartible)

Un lindo agregado seria que se pueda cargar tanto html como json. Entonces, el primero puede ir y parsear el html, pero despues ese puede directamente pasarle su json (que lo puede ver en el textarea) a los compañeros y evitar errores en el parseo

Dark Mode

Pinta agregar ese Dark Mode al calendario?

Materias Combobox doesn't keep state

Al escribir una materia en el combobox, la busca correctamente. Entonces, por ejemplo, busco ana, me aparecen todas las materias que comienzan con analisis, y agrego una.

Bien, despues de agregarla, yo debería poder clickear en el combobox (que todavia tiene el ana escrito) para seguir buscando materias, y las que me aparecen para seleccionar deberían ser las que ya estaban antes. Esto no pasa, lo que termina pasando es que hay que forzar al usuario a tener que escribir algo nuevo en el combobox para que muestre las materias correctas.

Drag and drop para ordenar materias

  1. Que en el menu de materias que uno selecciono para cursar te deje ordenarlas haciendo click y arrastrando (cosas de poder ordenarlas segun prioridad para anotarse). Tambiene estaria bueno que aparezca el nombre chiquito cosa que sea mas facil identificar cual es cual, en vez de una lista de numeros.

Poner el código del curso en algun lado

"Hola!! Estás páginas son super utiles y las uso siempre! Gracias por haberlas creado!!
Tengo una sugerencia para el plan de horarios: quizás si se incluyen los números de curso sería más práctico y asi ver en qué número de curso anotarse (los nombres de los profes tmb sirven pero si apareciera el número quizás sería más práctico) :) "

Reagregar materias transición

El commit 94c4483 elimino las materias de la transición al plan nuevo. Habría que reagregarlas con la modificación de las descripciones.

A la noche o mañana podría llegar a modificarlo yo.

[Mobile] Cambio de vista

Una boludez de UX pero que me parece que se podría tunear es el cambio de vista adentro del panel de agregado.
Me parecería mas intuitivo si estuviese anclado en la pantalla general (lo mismo si en algun momento llegase a haber un light/dark switch).

Trato de probarlo estas semanas a ver cómo queda y mando screen a ver que les parece.

Combinaciones de horarios

Si mal no recuerdo hace unos años el organizador tenía propuestas de horarios en base a la cantidad de materias que quiera hacer uno y cantidad de horas superpuestas aceptadas, ¿podría implementarse de vuelta?

Remove button of materias doesn't work

Cuando se elimina una materia con el botón de [ - ], por mas que desaparezcan los eventos de cada curso del calendario, el curso en sí sigue con el atr "show" en prendido, haciendo que el ojito que esta al lado del nombre siga ahí. (Forzando al usuario a tocar dos veces el curso que quiere re-agregar).

Hay que ver donde es que no se esta pasando el curso.show a false en removermateria

(a esta altura me pregunto porque los títulos de los issues son ingles, yet las descripciones en español)

Materia Arq de Software faltante

Hola!

No sé si me pasa solo a mi pero cuando quise armar un plan, busqué la materia Arquitectura del Software, que entiendo es una optativa tanto en el plan viejo como en el nuevo de la carrera de Ing.Informática, no la encontré.
Si mal no recuerdo, el código de materia es 75.73.
Me cloné el repo y lo estuve debuggeando un cachito para ver que pasaba. Al principio pensé que faltaba del json de carreras pero después vi que el código de materia esta ahí efectivamente.
Asi que vi que cuando crea el dataContext que después consume el buscador, inicializa el source con horariosSiu ó jsonData (horarios), ahi mismo puse un log y vi que no viene la materia directamente (source.materias.filter(materia => materia.codigo == "7573")).
Intenté agregarla al json de horarios pensando que eso lo arreglaría pero no vi nada diferente. No sé si tengo que actualizar algo o estoy viendo en el lado correcto. Tampoco me queda claro que esto sea un problema para todos o que quizás sea un tema mío, levanto el issue por las dudas!

Importar horarios del SIU browser compatibilty error

Hola @FdelMazo, encontre una especie de bug, cuando intento pegar horarios con mas de un periodo (ejemplo siu-fede-tabs.txt) en "importar horarios del SIU", me deja pegarlo, elegir periodo, pero no deja tocar click en el boton "aplicar horarios", esto pasa especificamente en Brave y Chrome, sin ningun tipo de adblock ni nada. Lo raro es que funciona perfecto en Firefox. Probe en otra maquina con linux y sucede lo mismo.

Podes reproducir el bug tambien?.

Video:
https://github.com/FdelMazo/FIUBA-Plan/assets/96202715/d3b6021c-7c67-4ad6-a993-7e060901b439

Planes nuevos?

Los planes nuevos traen muchas nuevas materias, que encima ya no tienen codigo numerico. Hay que adaptar el codigo que dependa de que las materias sean xx.xx a otra cosa, y tambien agregar las nuevas materias a las carreras...

Y ver que pinga hace ofertahoraria con las nuevas materias tambien!

Preview de cursos en hover

hola, muy comodo el organizador.
Algo que podria ser muy util agregarle es que al seleccionar una materia, tocando la flechita para abajo/arriba vayas recorriendo la lista de cursos y muestre el horario en la grid

Fix react state

Como la app está estable, esto hay que hacerlo recién despues de que termine la inscripción, mid-cuatri

Hay que admitirlo... el estado esta muy manejado.

Hay un context global (code smell... variable super global) que es un objeto entero, tocando la data de verdad (esta mal que entrelacemos la data con el estado, deberian ser dos entidades distintas), y conteniendo como 3 arrays a la vez, y se pasa por todo el repo con un llamado a useData horrendo y super fragil. Introdujo bocha de código repetido, y bocha de deep copys de objetos que solo terminaron funcionando después de mucha prueba y error. Casi todos los bugs que nos surgieron, salen de como manejamos el estado de la app.

Y a todo esto, no es código reactoso.

La manera correcta de hacerlo sería:

  • El top level component, Body, importa los datos de horarios.js
  • Se los pasa por prop data a su hijo, y cada uno de sus hijos a sus hijos.
  • Cada hijo que utiliza algo de la data, por ejemplo el select de carreras tiene que conocer la lista de carreras, agarra el array de ese elemento (son solo 3 arrays, data.carreras, data.materias, data.cursos) y lo encaja en un useState. Luego, the react way, va cambiando el estado interno. Si algún hijo suyo necesita eso, entonces le pasa el estado y el set del estado.

Esto impacta en... todo. Haría mucho más fácil de arreglar #18, mucho más facil de implementar una lista de eventos modificables (para remover en #24 y para agregar en un futuro), y hace que saquemos mucho código repetido y todos los deep copies. Si hace falta, es conveniente poner en pausa el resto de los issues hasta hacer esto, para evitar trabajar de más y reescribir de nuevo cosas.

Busco opiniones de @komod0 @nicomatex @JDSanto

(Muchas gracias @colltoaction por todas estas ideas)

Mejorar el componente de actividades extracurriculares

  1. Que sea mas intuitivo borrar cuando uno agrega actividades extracurriculares sin querer. A varios amigos les pasa de agregar al tocar con el click y no saber como borrarla

O embeberlo en el evento mismo, o mejorar el menu...

Empezar a usar ofertahoraria.fi.uba.ar

Al parecer la fiuba hizo en el 2018 una pagina que tiene los horarios del siu... si le pegas directamente a la api, te ahorras lo de pedirle a cada alumnno los htmls.

La lista de materias por carrera se pierde acá, pero se puede conseguir del fiuba map

Ejemplos de api

Después, solo habría que chequear alguna manera de confirmar que los datos siguen vigentes... supongo que un cronjob dando vueltas en algun lado que le pegue una vez por dia (ojo con tirarlo abajo...) y se fije si agregaron/sacaron/cambiaron cursos

Sugerencia Cambio de colores

Primero que nada esta muy bueno y funciona re bien. La sugerencia es que estaria bueno poder cambiar los colores de las materias, porque hay casos que se repiten varios colores.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.