From 727e25366188cd134dcc2f4ac86612986f0f6beb Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Wed, 2 May 2018 11:28:54 -0300 Subject: [PATCH] Start work on state and brasil dimensions --- src/libs/routes/classroomCount.js | 60 ++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/src/libs/routes/classroomCount.js b/src/libs/routes/classroomCount.js index 4d3eb76c..f0df9415 100644 --- a/src/libs/routes/classroomCount.js +++ b/src/libs/routes/classroomCount.js @@ -233,7 +233,6 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { delete req.filter; next(); }, rqf.parse(), rqf.build(), (req, res, next) => { - console.log('dims', req.dims); req.classroom = req.result; let classroom = []; @@ -247,29 +246,18 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { while (i < req.classroom.length) { let classroom = req.classroom[i]; // Cria hash única para cada espacialidade, dado um ano - let hash = '' + classroom.year; - if(req.dims.state) hash+= '' + classroom.state_id; - if(req.dims.city) hash+= '' + classroom.state_id + classroom.city_id; + let hash = '' + classroom.year + classroom.state_id + classroom.city_id; // Estrutura do objeto do resultado final let obj = { year: classroom.year, name: classroom.name, + state_id: classroom.state_id, + state_name: classroom.state_name, + city_id: classroom.city_id, + city_name: classroom.city_name, locations: [] }; - if(req.dims.state) { - obj.state_id = classroom.state_id; - obj.state_name = classroom.state_name; - } - - console.log('city', req.dims.city); - if(req.dims.city) { - obj.state_id = classroom.state_id; - obj.state_name = classroom.state_name; - obj.city_id = classroom.city_id; - obj.city_name = classroom.city_name; - } - let currentClassroomObj = null; if( !hashSet.has(hash) ) { hashSet.add(hash); @@ -401,7 +389,45 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => { ++i; } + // TODO: agregar por estado e brasil + let reduction = null; + if(req.dims.state || !req.dims.city) { // Se um dos dois acontecer, sabemos que devemos agregar + let i = 0; + reduction = []; + let reductionSet = new Set(); + while (i < result.length) { + let city = result[i]; + let obj = { + year: city.year, + name: city.name + } + + if(req.dims.state) { + obj.state_id = city.state_id; + obj.state_name = city.state_name; + } + + obj.locations = []; + + let hash = '' + city.year; + if(req.dims.state) hash += '' + city.state_id; + + let currentObj = null; + if(!reductionSet.has(hash)) { + reductionSet.add(hash); + reduction.push(obj); + currentObj = obj; + } else { // Está ordenado, podemos pegar o último + currentObj = reduction[reduction.length - 1]; + } + + // TODO: Fazer "merge" do array locations da cidade com o da agregação + // TODO: Somar total de turmas, matrÃculas e salas a serem construÃdas + ++i; + } + } + if(req.dims.state) { console.log('ESTADO!!!!'); } else if(!req.dims.city) { -- GitLab