Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error en materias con cursos especiales #33

Open
colltoaction opened this issue Aug 4, 2017 · 2 comments
Open

Error en materias con cursos especiales #33

colltoaction opened this issue Aug 4, 2017 · 2 comments

Comments

@colltoaction
Copy link
Member

colltoaction commented Aug 4, 2017

Cuando una materia tiene cursos especiales que no son para todas las carreras (como Química 6103), la materia puede no aparecer en el organizador.

El problema se da porque no incluímos en el archivo JSON la información sobre a qué carreras aplica cada curso. Sería fácil modificar el parser con algo del estilo:

for (let j = 0; j < materia.cursos.length; j++) {
	const curso = materia.cursos[j];
	if ((curso.carreras & carr.flag) === carr.flag) {
		//// almacenar la correlación carrera-materia-curso
	}
}

Pero luego hay un problema mayor a la hora de ofrecer solo los cursos que corresponden a las carreras seleccionadas como parte de la función llenarLista en el archivo organizador.js. Como todos sabemos, el código del organizador requeriría un refactor importante, y hasta que esto no suceda no veo ninguna solución "sencilla" para el problema.

Intentaré dedicarle un par de horas en algún momento, ya que estamos a principios de cuatrimestre y tenemos datos incorrectos.

@edittler
Copy link
Contributor

edittler commented Aug 4, 2017

Revisé como se persiste el JSON actualmente y pensé una posible solución para estos cursos "especiales".
A la izquierda van a ver cómo está representado actualmente y a la derecha cómo debe ser.
Perdón por la calidad, hacerlo a mano me parece más ágil.

fullsizerender 2

Para el caso de la derecha, el JSON debería quedar algo así

{
	"carreras": [{
		"codigo": 1, /* es más bien un identificador para la app */
		"nombre": "Civil",
		"materias": []
	}],
	"materias": [{
		"codigo": "6103",
		"nombre": "ANALISIS MATEMATICO II A",
		...
	}],
	"cursos": [{
		"materia": 6103, /* código de la materia a la que corresponde el curso */
		"carreras": [], /* array de los códigos/ids de las carreras que pueden tomar ese curso */
		"docentes": "nombres de los docentes",
		"clases": [] /* igual a cómo es ahora. */
		... 
	}] 
}

@edittler
Copy link
Contributor

edittler commented Aug 5, 2017

Creo que la solución que propuse anteriormente no es muy óptima para JSON y JS, por las siguientes razones:

  • Cuando se busca y selecciona una materia, se debe buscar en el json todos los cursos que correspondan a las carreras y materias seleccionadas.
  • Cuando se cambia la selección de carreras, implicaría volver a recorrer la colección de cursos para ver si hay cursos que son válidos para las nuevas carreras seleccionadas.

Propongo la siguiente forma de organizar los datos, que además parecería más fácil de generar a partir del PDF.

{
	"carreras": [{
		"codigo": 1, /* es más bien un identificador para la app */
		"nombre": "Civil",
		"materias": []
	}],
	"materias": [{
		"codigo": "6103",
		"nombre": "ANALISIS MATEMATICO II A",
		"cursos": [{
			"carreras": [], /* array de los códigos/ids de las carreras que pueden tomar ese curso */
			"docentes": "nombres de los docentes",
			"clases": [] /* igual a cómo es ahora. */
		... 
	}] 
}

De esta manera, los cursos siguen estando dentro de la materia pero almacenan las carreras que pueden tomarlos. Al cambiar selección de la carrera sólo se deben recorrer todos los cursos de las materias seleccionadas.

Otra ventaja es que en el PDF ese dato de las carreras está en cada curso, por lo que parsearlo es más sencillo también.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants