From d4df694d08509bc922f00a5b0967f7e0f2068ee5 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Wed, 15 Aug 2018 09:54:20 -0300 Subject: [PATCH 01/20] Update CHANGELOG --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b07f941..e057c443 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## UNRELEASED +### Added - Dimension state in route enrollment now returns state name and id +- Add route to search for INEP +- Add search with state abbreviation and city name in school route ## 1.5.0 - 2018-07-30 ### Added -- GitLab From 3ba7f20895eb264d4f8bb356d7441cf205870988 Mon Sep 17 00:00:00 2001 From: Gabriel Ruschel <grc15@inf.ufpr.br> Date: Thu, 16 Aug 2018 10:55:45 -0300 Subject: [PATCH 02/20] Revert "Merge branch 'account_duplicate' into development" This reverts commit 06a917994e45947c4207ab39f916136c7b121714, reversing changes made to 2c2dbdd6100d9b95893c2e25ef8ae0b9e328a1d8. --- src/libs/routes/user.js | 98 ++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 60 deletions(-) diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js index ee5ddf01..af123a58 100644 --- a/src/libs/routes/user.js +++ b/src/libs/routes/user.js @@ -141,76 +141,54 @@ userApp.post('/', (req, res, next) => { admin: false }); - let emailAddress = req.body.email; - let origin = req.body.origin; - User.findOne({email: emailAddress}, (err, find)=> { - if(err) { + if (typeof req.body.password === 'undefined' || !req.body.password) { + res.statusCode = 400; + return res.json({errors: ["O campo senha é obrigatório"]}); + } else { + user.save((err) => { + if(err) { log.error(err); let errors = []; for(let errName in err.errors) { errors.push(err.errors[errName].message); } + log.error(errors); res.statusCode = 400; return res.json({err, errors}); - } else if (find) { - if (find.origin != origin) { - res.statusCode = 400; - return res.json({errors:["Identificamos que esta conta já existe em outra plataforma.\n\nVocê pode realizar o login com a conta do SimCAQ ou criar uma conta nova com outros dados"]}); - } else { - res.statusCode = 400; - return res.json({errors:["Identificamos que esta conta já existe nesta plataforma"]}); - } - } else { - if (typeof req.body.password === 'undefined' || !req.body.password) { - res.statusCode = 400; - return res.json({errors: ["O campo senha é obrigatório"]}); - } else { - user.save((err) => { - if(err) { - log.error(err); - let errors = []; - for(let errName in err.errors) { - errors.push(err.errors[errName].message); - } - log.error(errors); - res.statusCode = 400; - return res.json({err, errors}); - } + } - // Create verification token - let verificationToken = new VerificationToken({ - userId: user._id - }); + // Create verification token + let verificationToken = new VerificationToken({ + userId: user._id + }); - verificationToken.createVerificationToken((err, token) => { - if(err) { - log.error(err); - return next(err); - } - let url = config.default.lde.url + '/verify'; - let text = `Olá, ${user.name}, seja bem vindo/a ao Laboratório de Dados Educacionais.\n\nClique neste link para confirmar sua conta: ${url}/${token}`; - // Send confirmation email - let mailOptions = { - to: `"${user.name} <${user.email}>"`, - subject: "Confirme seu cadastro - Laboratório de Dados Educacionais", - text - } - email(mailOptions, (err, info) => { - if(err) { - log.error(err); - res.json({msg: 'User created'}); - } - if(info) { - log.info(`Message ${info.messageId} sent: ${info.response}`); - log.info(`Usuário ${user.email} foi criado`); - } - res.json({msg: 'User created'}); - }); - }); - }); + verificationToken.createVerificationToken((err, token) => { + if(err) { + log.error(err); + return next(err); + } + let url = config.default.lde.url + '/verify'; + let text = `Olá, ${user.name}, seja bem vindo/a ao Laboratório de Dados Educacionais.\n\nClique neste link para confirmar sua conta: ${url}/${token}`; + // Send confirmation email + let mailOptions = { + to: `"${user.name} <${user.email}>"`, + subject: "Confirme seu cadastro - Laboratório de Dados Educacionais", + text + } + email(mailOptions, (err, info) => { + if(err) { + log.error(err); + res.json({msg: 'User created'}); } - } - }) + if(info) { + log.info(`Message ${info.messageId} sent: ${info.response}`); + log.info(`Usuário ${user.email} foi criado`); + } + res.json({msg: 'User created'}); + }); + }); + }); + } }); -- GitLab From 39e30a2ce24300c1933e81e29a071f48054e609b Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 16 Aug 2018 11:33:16 -0300 Subject: [PATCH 03/20] Fix portal mec inep name --- src/libs/routes/portalMecInep.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/routes/portalMecInep.js b/src/libs/routes/portalMecInep.js index 980e84bf..2b235891 100644 --- a/src/libs/routes/portalMecInep.js +++ b/src/libs/routes/portalMecInep.js @@ -46,14 +46,13 @@ rqf.addField({ portalMecInepApp.get('/', rqf.parse(), (req, res, next) => { req.sql.field('DISTINCT escola.id', 'id') - .field('escola.nome_escola', 'school_name') + .field('escola.nome_escola', 'name') .from('escola') .join('estado', null, 'estado.id=escola.estado_id') .field('estado.nome', 'state_name') .join('municipio', null, 'municipio.id=escola.municipio_id') .field('municipio.nome', 'city_name') - next(); }, rqf.build(), query, response('portalMec_inep')); -- GitLab From d18d5352e28a5ec01e60eb2414f1fbfc20e72141 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 16 Aug 2018 11:35:44 -0300 Subject: [PATCH 04/20] Change name route portal inep --- src/libs/routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/routes/api.js b/src/libs/routes/api.js index 8d5aefbd..ebb16c02 100644 --- a/src/libs/routes/api.js +++ b/src/libs/routes/api.js @@ -121,6 +121,6 @@ api.use('/cub', cub); api.use('/auxiliar', auxiliar); api.use('/verify_teacher', verifyTeacher); api.use('/class_count', classCount); -api.use('/poltal_mec_inep', portalMecInep); +api.use('/portal_mec_inep', portalMecInep); module.exports = api; -- GitLab From 4aaaf7f4b80a30646f2194c6db6c2964501e84a1 Mon Sep 17 00:00:00 2001 From: Victor Picussa <vp16@inf.ufpr.br> Date: Fri, 24 Aug 2018 10:19:18 -0300 Subject: [PATCH 05/20] [dailyChargeAmount]LDE multi column change --- src/libs/routes/dailyChargeAmount.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js index 2bf1f513..3cea1408 100644 --- a/src/libs/routes/dailyChargeAmount.js +++ b/src/libs/routes/dailyChargeAmount.js @@ -404,7 +404,11 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) req.sql.from('turma') .field('turma.ano_censo', 'year') .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') - .field('AVG(turma.duracao_turma)/60.0', 'total') + .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration') + .field('MEDIAN(turma.duracao_turma)/60.0', 'median_class_duration') + .field('STDDEV_POP(turma.duracao_turma)/60.0', 'std_class_duration') + .field('QUANTILE(turma.duracao_turma, 0.25)/60.0', 'fstqt_class_duration') + .field('QUANTILE(turma.duracao_turma, 0.75)/60.0', 'thdqt_class_duration') .group('turma.ano_censo') .group('turma.etapas_mod_ensino_segmento_id') .order('turma.ano_censo') -- GitLab From 4b58b598294c01599dd2cdb396918464adf0d00a Mon Sep 17 00:00:00 2001 From: Victor Picussa <vp16@inf.ufpr.br> Date: Mon, 27 Aug 2018 09:32:59 -0300 Subject: [PATCH 06/20] [dailyChargeAmount]Removed indicator limitation --- src/libs/routes/dailyChargeAmount.js | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js index 3cea1408..33d914fc 100644 --- a/src/libs/routes/dailyChargeAmount.js +++ b/src/libs/routes/dailyChargeAmount.js @@ -423,21 +423,6 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) } next(); - -}, query, addMissing(rqf), (req, res, next) => { - - function sliced(object) { - return object['education_level_mod_id'] > 4; - } - - if ('period' in req.filter || 'period' in req.dims) { - req.filter['period'].forEach((element) => { - if (element == '3') - req.result = req.result.filter(sliced); - }); - } - - next(); -}, id2str.transform(), response('turma')); +}, query, addMissing(rqf), id2str.transform(), response('turma')); module.exports = dailyChargeAmountApp; -- GitLab From 29198b759e6bbfdd798b1b886b2b1cc503c662f4 Mon Sep 17 00:00:00 2001 From: Glenda <gpt16@inf.ufpr.br> Date: Wed, 29 Aug 2018 10:22:07 -0300 Subject: [PATCH 07/20] fix total row and dimensions --- src/libs/routes/classCount.js | 106 +++++++++++++++++++++++----------- 1 file changed, 72 insertions(+), 34 deletions(-) diff --git a/src/libs/routes/classCount.js b/src/libs/routes/classCount.js index d415d5a3..8747ee39 100644 --- a/src/libs/routes/classCount.js +++ b/src/libs/routes/classCount.js @@ -298,7 +298,7 @@ classCountApp.get('/source', (req, res, next) => { next(); }, query, response('source')); -function mediaCalc(response) { +function averageCalc(response) { let obj = []; response.forEach((result) => { let newObj = {}; @@ -307,13 +307,15 @@ function mediaCalc(response) { if(key !== "total_classes" && key !== "total_enrollment") newObj[key] = result[key] }) - newObj.total = result.total_enrollment / result.total_classes; + newObj.average = result.total_enrollment / result.total_classes; obj.push(newObj); }); return(obj); } +// LDE classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { + // Faz a consulta do número de alunos pelas dimensões if(("education_level_mod" in req.dims) || ("education_level_mod" in req.filter)) { req.sql.field('COUNT(turma.id)', 'total_classes') .field('SUM(turma.num_matricula)', 'total_enrollment') @@ -332,32 +334,56 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { }); } }, rqf.build(), query, id2str.transform(), (req, res, next) => { - req.partial = req.result; - req.resetSql(); - req.dims = {}; - req.filter = {}; - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') - .field('turma.ano_censo', 'year') - .from('turma') - .group('turma.ano_censo') - .order('turma.ano_censo') - .where('turma.tipo_turma_id = 0 AND turma.etapas_mod_ensino_segmento_id >= 1 AND turma.etapas_mod_ensino_segmento_id <= 10'); - next(); -}, query, addMissing(rqf), id2str.transform(), (req, res, next) => { - const classCount = mediaCalc(req.partial); - const yearClassCount = mediaCalc(req.result); - req.result = classCount; - yearClassCount.forEach((result) => { - let obj = {}; - obj = result; - obj.label = "total_year_media"; - req.result.push(obj); - }) + req.partial = []; + + // Caso tenha apenas uma dimensão, a indicador possuirá uma linha de total + if((req.dims) && (req.dims.size == 1)) { + req.partial = req.result; + + // A linha de total deverá conter o valor total do ano que está no banco de dados, então usa o mesmo filtro de anos da consulta anterior + let yearFilter = {}; + if("min_year" in req.filter) + yearFilter.min_year = req.filter.min_year; + if("max_year" in req.filter) + yearFilter.max_year = req.filter.max_year; + + // Faz a consulta sem dimensões, do total do(s) ano(s) escolhido(s) + req.resetSql(); + req.dims = {}; + req.filter = yearFilter; + req.sql.field('COUNT(turma.id)', 'total_classes') + .field('SUM(turma.num_matricula)', 'total_enrollment') + .field("'Brasil'", 'name') + .field('turma.ano_censo', 'year') + .from('turma') + .group('turma.ano_censo') + .order('turma.ano_censo') + .where('turma.tipo_turma_id = 0 AND turma.etapas_mod_ensino_segmento_id >= 1 AND turma.etapas_mod_ensino_segmento_id <= 10'); + } + next(); +}, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => { + if(req.partial.length > 0) { + const classCount = averageCalc(req.partial); + const yearClassCount = averageCalc(req.result); + req.result = classCount; + + // Como a linha de total deve aparecer em um caso específico, ela é adicionada junto com a dimensão obrigatória + yearClassCount.forEach((result) => { + let obj = {}; + obj = result; + obj.education_level_mod_name = "Total"; + req.result.push(obj); + }) + } + // Caso tenha mais de uma dimensão, retorna a consulta só pelas dimensões, sem linha de total + else { + const classCount = averageCalc(req.result); + req.result = classCount; + } next(); }, response('class_count')); +// SimCAQ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { req.sql.field('COUNT(turma.id)', 'total_classes') .field('SUM(turma.num_matricula)', 'total_enrollment') @@ -368,13 +394,22 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { .order('turma.ano_censo') .where('turma.tipo_turma_id = 0 AND turma.dependencia_adm_id <= 3 AND ((turma.etapa_resumida >= 1 AND turma.etapa_resumida <= 7) OR turma.etapa_resumida = 99)'); next(); -}, query, id2str.transform(), (req, res, next) => { +}, rqf.build(), query, id2str.transform(), (req, res, next) => { req.partial = []; - if(Object.keys(req.dims).length > 0 || Object.keys(req.filter).length > 0) { + if((req.dims) && (req.dims.size == 1)) { req.partial = req.result; + + // Se a consulta anterior selecionou dimensão: + // Considera apenas os anos escolhidos na consulta anterior para contar o número total de alunos + let yearFilter = {}; + if("min_year" in req.filter) + yearFilter.min_year = req.filter.min_year; + if("max_year" in req.filter) + yearFilter.max_year = req.filter.max_year; + req.resetSql(); req.dims = {}; - req.filter = {}; + req.filter = yearFilter; req.sql.field('COUNT(turma.id)', 'total_classes') .field('SUM(turma.num_matricula)', 'total_enrollment') .field("'Brasil'", 'name') @@ -385,20 +420,23 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { .where('turma.tipo_turma_id = 0 AND turma.dependencia_adm_id <= 3 AND ((turma.etapa_resumida >= 1 AND turma.etapa_resumida <= 7) OR turma.etapa_resumida = 99)'); } next(); -}, query, addMissing(rqf), id2str.transform(), (req, res, next) => { +}, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => { if(req.partial.length > 0) { - const classCount = mediaCalc(req.partial); - const yearClassCount = mediaCalc(req.result); + const classCount = averageCalc(req.partial); + const yearClassCount = averageCalc(req.result); req.result = classCount; + + // Adiciona os totais por anos ao fim da consulta + // Como esse tipo de total é específico desse indicador, um label foi adicionado para indicar yearClassCount.forEach((result) => { let obj = {}; - obj = result; - obj.label = "total_year_media"; + obj = result; + obj.label = "total_year_average"; req.result.push(obj); }) } else { - const classCount = mediaCalc(req.result); + const classCount = averageCalc(req.result); req.result = classCount; } next(); -- GitLab From bc80a133a3d92caa7c6ea15627e483b953e02cbd Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 30 Aug 2018 10:56:12 -0300 Subject: [PATCH 08/20] Remove dims in transport route --- src/libs/routes/transport.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/libs/routes/transport.js b/src/libs/routes/transport.js index 266b1400..449895d0 100644 --- a/src/libs/routes/transport.js +++ b/src/libs/routes/transport.js @@ -373,14 +373,14 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Vans e Kombi let goVansAndKombi = allTransports.clone(); goVansAndKombi.field('matricula.transporte_vans_kombi','use_transport_id') - goVansAndKombi.where('matricula.transporte_vans_kombi = 1 OR matricula.transporte_vans_kombi = 0'); + goVansAndKombi.where('matricula.transporte_vans_kombi = 1'); goVansAndKombi.group('matricula.transporte_vans_kombi'); req.queryIndex.goVansAndKombi = req.querySet.push(goVansAndKombi) - 1; // Micro let goMicroBus = allTransports.clone(); goMicroBus.field('matricula.transporte_micro_onibus', 'use_transport_id') - goMicroBus.where('matricula.transporte_micro_onibus = 1 OR matricula.transporte_micro_onibus = 0'); + goMicroBus.where('matricula.transporte_micro_onibus = 1'); goMicroBus.group('matricula.transporte_micro_onibus'); req.queryIndex.goMicroBus = req.querySet.push(goMicroBus) - 1; @@ -388,63 +388,63 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Ônibus let goBus = allTransports.clone(); goBus.field("matricula.transporte_onibus", 'use_transport_id') - goBus.where('matricula.transporte_onibus = 1 OR matricula.transporte_onibus = 0'); + goBus.where('matricula.transporte_onibus = 1'); goBus.group('matricula.transporte_onibus') req.queryIndex.goBus = req.querySet.push(goBus) - 1; // Bicicleta let goBikes = allTransports.clone(); goBikes.field('matricula.transporte_bicicleta', 'use_transport_id') - goBikes.where('matricula.transporte_bicicleta = 1 OR matricula.transporte_bicicleta = 0'); + goBikes.where('matricula.transporte_bicicleta = 1'); goBikes.group('matricula.transporte_bicicleta') req.queryIndex.goBikes = req.querySet.push(goBikes) - 1; // Tração Animal let goAnimalTraction = allTransports.clone(); goAnimalTraction.field('matricula.transporte_animal', 'use_transport_id') - goAnimalTraction.where('matricula.transporte_animal = 1 OR matricula.transporte_animal = 0'); + goAnimalTraction.where('matricula.transporte_animal = 1'); goAnimalTraction.group('matricula.transporte_animal') req.queryIndex.goAnimalTraction = req.querySet.push(goAnimalTraction) - 1; // Outro Veículo let goOtherVehicle = allTransports.clone(); goOtherVehicle.field('matricula.transporte_outro', 'use_transport_id') - goOtherVehicle.where('matricula.transporte_outro = 1 OR matricula.transporte_outro = 0'); + goOtherVehicle.where('matricula.transporte_outro = 1'); goOtherVehicle.group('matricula.transporte_outro') req.queryIndex.goOtherVehicle = req.querySet.push(goOtherVehicle) - 1; // Aquaviário/ Embarcação (capacidade até 5 alunos) let goWaterway_5_Students = allTransports.clone(); goWaterway_5_Students.field('matricula.transporte_embar_0_5','use_transport_id') - goWaterway_5_Students.where('matricula.transporte_embar_0_5 = 1 OR matricula.transporte_embar_0_5 = 0'); + goWaterway_5_Students.where('matricula.transporte_embar_0_5 = 1'); goWaterway_5_Students.group('matricula.transporte_embar_0_5') req.queryIndex.goWaterway_5_Students = req.querySet.push(goWaterway_5_Students) - 1; // Aquaviário/ Embarcação (capacidade de 5 até 15 alunos) let goWaterway_15_Students = allTransports.clone(); goWaterway_15_Students.field('matricula.transporte_embar_5_15', 'use_transport_id') - goWaterway_15_Students.where('matricula.transporte_embar_5_15 = 1 OR matricula.transporte_embar_5_15 = 0'); + goWaterway_15_Students.where('matricula.transporte_embar_5_15 = 1'); goWaterway_15_Students.group('matricula.transporte_embar_5_15') req.queryIndex.goWaterway_15_Students = req.querySet.push(goWaterway_15_Students) - 1; // Aquaviário/ Embarcação (capacidade de 15 até 35 alunos)r let goWaterway_35_Students = allTransports.clone(); goWaterway_35_Students.field('matricula.transporte_embar_15_35', 'use_transport_id') - goWaterway_35_Students.where('matricula.transporte_embar_15_35 = 1 OR matricula.transporte_embar_15_35 = 0'); + goWaterway_35_Students.where('matricula.transporte_embar_15_35 = 1'); goWaterway_35_Students.group('matricula.transporte_embar_15_35') req.queryIndex.goWaterway_35_Students = req.querySet.push(goWaterway_35_Students) - 1; // Aquaviário/ Embarcação (capacidade mais 35 alunos) let goWaterwayMoreThan_35 = allTransports.clone(); goWaterwayMoreThan_35.field('matricula.transporte_embar_35', 'use_transport_id') - goWaterwayMoreThan_35.where('matricula.transporte_embar_35 = 1 OR matricula.transporte_embar_35 = 0'); + goWaterwayMoreThan_35.where('matricula.transporte_embar_35 = 1'); goWaterwayMoreThan_35.group('matricula.transporte_embar_35') req.queryIndex.goWaterwayMoreThan_35 = req.querySet.push(goWaterwayMoreThan_35) - 1; // Trêm / Metrô let goSubwayAndTrain = allTransports.clone(); goSubwayAndTrain.field('matricula.transporte_trem_metro', 'use_transport_id') - goSubwayAndTrain.where('matricula.transporte_trem_metro = 1 OR matricula.transporte_trem_metro = 0'); + goSubwayAndTrain.where('matricula.transporte_trem_metro = 1'); goSubwayAndTrain.group('matricula.transporte_trem_metro') req.queryIndex.goSubwayAndTrain = req.querySet.push(goSubwayAndTrain) - 1; @@ -463,8 +463,8 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { for (let i = 0; i < transport_match_0.length; i++) { transport_match_0[i].use_transport_id = true; transport_match.push(transport_match_0[i]) - transport_match_1[i].use_transport_id = false; - transport_match.push(transport_match_1[i]) + // transport_match_1[i].use_transport_id = false; + // transport_match.push(transport_match_1[i]) } //modifica adicionando use_transport_id=false, com os mesmos valores @@ -472,8 +472,8 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { for (let i = 0; i < all_enrollment_match_0.length; i++) { all_enrollment_match_0[i].use_transport_id = true; all_enrollment_match.push(all_enrollment_match_0[i]) - all_enrollment_match_1[i].use_transport_id = false; - all_enrollment_match.push(all_enrollment_match_1[i]) + // all_enrollment_match_1[i].use_transport_id = false; + // all_enrollment_match.push(all_enrollment_match_1[i]) } let public_transport = matchQueries(all_enrollment_match, req.result[req.queryIndex.allEnrollmentTransport]); -- GitLab From c46299882b7136a49df64bf94157db85ae82290e Mon Sep 17 00:00:00 2001 From: Glenda <gpt16@inf.ufpr.br> Date: Thu, 30 Aug 2018 12:19:03 -0300 Subject: [PATCH 09/20] fix LDE education level mod sequence --- src/libs/routes/classCount.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/libs/routes/classCount.js b/src/libs/routes/classCount.js index 8747ee39..854b489a 100644 --- a/src/libs/routes/classCount.js +++ b/src/libs/routes/classCount.js @@ -313,6 +313,28 @@ function averageCalc(response) { return(obj); } +// Se a dimensão obrigatória do LDE (etapa de ensino) possui alguma etapa sem nenhum valor, então é criado um objeto +// com média 0.0 e é inserido no resultado. Usada para não quebrar a sequência de etapas na tabela do LDE. +function addNullFields(result) { + const firstYear = result[0].year; + var obj = result.filter(res => res.year == firstYear); + var prevFirstDimId = obj[0]; + obj.forEach((d) => { + if((d["education_level_mod_id"] > prevFirstDimId["education_level_mod_id"]) && (prevFirstDimId["education_level_mod_id"] != 10) && + (d["education_level_mod_id"] != prevFirstDimId["education_level_mod_id"] + 1)) { + let newObj = {}; + Object.keys(prevFirstDimId).forEach((key) => { + newObj[key] = prevFirstDimId[key]; + }); + newObj.education_level_mod_id = d["education_level_mod_id"] - 1; + newObj.education_level_mod_name = id2str.educationLevelMod(d["education_level_mod_id"] - 1); + newObj.average = 0.0; + result.splice(result.indexOf(prevFirstDimId) + 1, 0, newObj); + } + prevFirstDimId = d; + }); +} + // LDE classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Faz a consulta do número de alunos pelas dimensões @@ -379,6 +401,7 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { else { const classCount = averageCalc(req.result); req.result = classCount; + addNullFields(req.result); } next(); }, response('class_count')); -- GitLab From c093afde3bfcfeaeb459a437ce58108950d09415 Mon Sep 17 00:00:00 2001 From: Glenda <gpt16@inf.ufpr.br> Date: Fri, 31 Aug 2018 09:39:57 -0300 Subject: [PATCH 10/20] classCount: add median, stddev, firstQt and thirdQt --- src/libs/routes/classCount.js | 76 ++++++++++++++++------------------- 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/src/libs/routes/classCount.js b/src/libs/routes/classCount.js index 854b489a..71b7ab36 100644 --- a/src/libs/routes/classCount.js +++ b/src/libs/routes/classCount.js @@ -298,21 +298,6 @@ classCountApp.get('/source', (req, res, next) => { next(); }, query, response('source')); -function averageCalc(response) { - let obj = []; - response.forEach((result) => { - let newObj = {}; - let keys = Object.keys(result); - keys.forEach((key) => { - if(key !== "total_classes" && key !== "total_enrollment") - newObj[key] = result[key] - }) - newObj.average = result.total_enrollment / result.total_classes; - obj.push(newObj); - }); - return(obj); -} - // Se a dimensão obrigatória do LDE (etapa de ensino) possui alguma etapa sem nenhum valor, então é criado um objeto // com média 0.0 e é inserido no resultado. Usada para não quebrar a sequência de etapas na tabela do LDE. function addNullFields(result) { @@ -339,10 +324,13 @@ function addNullFields(result) { classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Faz a consulta do número de alunos pelas dimensões if(("education_level_mod" in req.dims) || ("education_level_mod" in req.filter)) { - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') @@ -358,7 +346,7 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { }, rqf.build(), query, id2str.transform(), (req, res, next) => { req.partial = []; - // Caso tenha apenas uma dimensão, a indicador possuirá uma linha de total + // Caso tenha apenas uma dimensão, o indicador possuirá uma linha de total if((req.dims) && (req.dims.size == 1)) { req.partial = req.result; @@ -373,10 +361,13 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { req.resetSql(); req.dims = {}; req.filter = yearFilter; - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') @@ -384,10 +375,10 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { } next(); }, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => { + // Se tem apenas uma dimensão if(req.partial.length > 0) { - const classCount = averageCalc(req.partial); - const yearClassCount = averageCalc(req.result); - req.result = classCount; + const yearClassCount = req.result; + req.result = req.partial; // Como a linha de total deve aparecer em um caso específico, ela é adicionada junto com a dimensão obrigatória yearClassCount.forEach((result) => { @@ -398,20 +389,21 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { }) } // Caso tenha mais de uma dimensão, retorna a consulta só pelas dimensões, sem linha de total - else { - const classCount = averageCalc(req.result); - req.result = classCount; + else addNullFields(req.result); - } + next(); }, response('class_count')); // SimCAQ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') @@ -433,10 +425,13 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { req.resetSql(); req.dims = {}; req.filter = yearFilter; - req.sql.field('COUNT(turma.id)', 'total_classes') - .field('SUM(turma.num_matricula)', 'total_enrollment') - .field("'Brasil'", 'name') + req.sql.field("'Brasil'", 'name') .field('turma.ano_censo', 'year') + .field('AVG(turma.num_matricula)', 'average') + .field('MEDIAN(turma.num_matricula)', 'median') + .field('STDDEV_POP(turma.num_matricula)', 'stddev') + .field('QUANTILE(turma.num_matricula, 0.25)', 'first_qt') + .field('QUANTILE(turma.num_matricula, 0.75)', 'third_qt') .from('turma') .group('turma.ano_censo') .order('turma.ano_censo') @@ -444,10 +439,10 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { } next(); }, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => { + // Se possui apenas uma dimensão if(req.partial.length > 0) { - const classCount = averageCalc(req.partial); - const yearClassCount = averageCalc(req.result); - req.result = classCount; + const yearClassCount = req.result; + req.result = req.partial; // Adiciona os totais por anos ao fim da consulta // Como esse tipo de total é específico desse indicador, um label foi adicionado para indicar @@ -458,10 +453,7 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => { req.result.push(obj); }) } - else { - const classCount = averageCalc(req.result); - req.result = classCount; - } + // Caso tenha mais de uma dimensão, retorna a consulta só pelas dimensões, sem linha de total (req.result) next(); }, response('class_count')); -- GitLab From f0ab35d797528100b6fb443ecf1ff3dad0a719bd Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Mon, 3 Sep 2018 10:05:15 -0300 Subject: [PATCH 11/20] Fix filters in infrastructure indicator --- src/libs/routes/infrastructure.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/libs/routes/infrastructure.js b/src/libs/routes/infrastructure.js index 290bf1a0..8b01e338 100644 --- a/src/libs/routes/infrastructure.js +++ b/src/libs/routes/infrastructure.js @@ -67,19 +67,26 @@ infrastructureApp.get('/rural_location', (req, res, next) => { }, response('rural_location')); infrastructureApp.get('/adm_dependency', (req, res, next) => { - req.sql.from('dependencia_adm') - .field('id') - .field('nome', 'name') - .where('id <= 4'); + req.result = []; + for(let i = 1; i <= 4; ++i) { + req.result.push({ + id: i, + name: id2str.admDependency(i) + }); + }; next(); -}, query, response('adm_dependency')); +}, response('adm_dependency')); infrastructureApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm_priv') - .field('id', 'id') - .field('nome', 'name'); + req.result = []; + for(let i = 1; i <= 6; ++i) { + req.result.push({ + id: i, + name: id2str.admDependencyPriv(i) + }); + }; next(); -}, query, response('adm_dependency_detailed')); +}, response('adm_dependency_detailed')); rqf.addField({ name: 'filter', -- GitLab From 4e27f333d75fdbc64ef0dec82ba1eed4ee1a9bf2 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Mon, 3 Sep 2018 10:14:28 -0300 Subject: [PATCH 12/20] Change courtyard variable in school infrastructure Related: simcaq/SCRUM#440 --- src/libs/routes/schoolInfrastructure.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/routes/schoolInfrastructure.js b/src/libs/routes/schoolInfrastructure.js index c53a02af..0c617883 100644 --- a/src/libs/routes/schoolInfrastructure.js +++ b/src/libs/routes/schoolInfrastructure.js @@ -425,16 +425,16 @@ infrastructureApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { req.queryIndex.allCourtyard = req.queryIndex.allSchools; let haveCourtyard = allSchools.clone(); - haveCourtyard.where('escola.patio_coberto = 1 OR escola.patio_descoberto = 1'); + haveCourtyard.where('escola.patio = 2 OR escola.patio = 1'); req.queryIndex.haveCourtyard = req.querySet.push(haveCourtyard) - 1; let needCourtyard = allSchools.clone(); - needCourtyard.where('escola.patio_descoberto = 0 AND escola.patio_descoberto = 0'); + needCourtyard.where('escola.patio = 1'); req.queryIndex.needCourtyard = req.querySet.push(needCourtyard) - 1; // Cobertura do Pátio let allCourtyardCoverage = allSchools.clone(); - allCourtyardCoverage.where('escola.patio_coberto=0 AND escola.patio_descoberto = 1'); + allCourtyardCoverage.where('escola.patio = 1'); req.queryIndex.allCourtyardCoverage = req.querySet.push(allCourtyardCoverage) - 1; req.queryIndex.haveCourtyardCoverage = req.queryIndex.allCourtyardCoverage; -- GitLab From 898dbff699994a9fdbd4d15a8c3fa512b69f64af Mon Sep 17 00:00:00 2001 From: Victor Picussa <vp16@inf.ufpr.br> Date: Tue, 4 Sep 2018 10:56:22 -0300 Subject: [PATCH 13/20] [dailyChargeAmount]Data sent modification --- src/libs/routes/dailyChargeAmount.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js index 33d914fc..b536eb00 100644 --- a/src/libs/routes/dailyChargeAmount.js +++ b/src/libs/routes/dailyChargeAmount.js @@ -382,11 +382,13 @@ dailyChargeAmountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) => { var status = 0; + if (('education_level_mod' in req.filter || 'education_level_mod' in req.dims) && ('integral_time' in req.filter)) { if (req.filter['integral_time'] == '0' && ('period' in req.filter)) { - if (req.filter['period'].length == 1 + if (req.dims.size > 1) status = 2; + else if (req.filter['period'].length == 1 && req.filter['period'][0] == '3') { status = 1; } else if (req.filter['period'].length <= 2 @@ -396,11 +398,12 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) status = 1; } } else if (req.filter['integral_time'] == '1') { - status = 1; + if (req.dims.size > 1) status = 2; + else status = 1; } } - if (status) { + if (status == 1) { req.sql.from('turma') .field('turma.ano_censo', 'year') .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') @@ -414,6 +417,16 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) .order('turma.ano_censo') .order('turma.etapas_mod_ensino_segmento_id') .where('turma.tipo_turma_id <= 3') + } else if (status == 2) { + req.sql.from('turma') + .field('turma.ano_censo', 'year') + .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') + .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration') + .group('turma.ano_censo') + .group('turma.etapas_mod_ensino_segmento_id') + .order('turma.ano_censo') + .order('turma.etapas_mod_ensino_segmento_id') + .where('turma.tipo_turma_id <= 3') } else { res.status(400); next({ -- GitLab From d9268ab225b5d100bccf012d724244c83fc96d14 Mon Sep 17 00:00:00 2001 From: Victor Picussa <vp16@inf.ufpr.br> Date: Wed, 5 Sep 2018 09:58:28 -0300 Subject: [PATCH 14/20] Revert "[dailyChargeAmount]Data sent modification" This reverts commit 898dbff699994a9fdbd4d15a8c3fa512b69f64af. --- src/libs/routes/dailyChargeAmount.js | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js index b536eb00..33d914fc 100644 --- a/src/libs/routes/dailyChargeAmount.js +++ b/src/libs/routes/dailyChargeAmount.js @@ -382,13 +382,11 @@ dailyChargeAmountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) => { var status = 0; - if (('education_level_mod' in req.filter || 'education_level_mod' in req.dims) && ('integral_time' in req.filter)) { if (req.filter['integral_time'] == '0' && ('period' in req.filter)) { - if (req.dims.size > 1) status = 2; - else if (req.filter['period'].length == 1 + if (req.filter['period'].length == 1 && req.filter['period'][0] == '3') { status = 1; } else if (req.filter['period'].length <= 2 @@ -398,12 +396,11 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) status = 1; } } else if (req.filter['integral_time'] == '1') { - if (req.dims.size > 1) status = 2; - else status = 1; + status = 1; } } - if (status == 1) { + if (status) { req.sql.from('turma') .field('turma.ano_censo', 'year') .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') @@ -417,16 +414,6 @@ dailyChargeAmountApp.get('/average', rqf.parse(), rqf.build(), (req, res, next) .order('turma.ano_censo') .order('turma.etapas_mod_ensino_segmento_id') .where('turma.tipo_turma_id <= 3') - } else if (status == 2) { - req.sql.from('turma') - .field('turma.ano_censo', 'year') - .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') - .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration') - .group('turma.ano_censo') - .group('turma.etapas_mod_ensino_segmento_id') - .order('turma.ano_censo') - .order('turma.etapas_mod_ensino_segmento_id') - .where('turma.tipo_turma_id <= 3') } else { res.status(400); next({ -- GitLab From cc90a6446a77cea4e8cdf2eb6febc04762929ed5 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Wed, 5 Sep 2018 11:30:59 -0300 Subject: [PATCH 15/20] Fix Pib per capita route --- src/libs/routes/pibpercapita.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libs/routes/pibpercapita.js b/src/libs/routes/pibpercapita.js index bfe2c4dd..aacebe6e 100644 --- a/src/libs/routes/pibpercapita.js +++ b/src/libs/routes/pibpercapita.js @@ -155,6 +155,7 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { .group('ibge_pib.ano_censo') .group('ibge_pib.pib_per_capita') .order('ibge_pib.ano_censo') + console.log("CiTy") } else { req.sql.from('ibge_pib') .field('SUM(ibge_pib.pib)/SUM(ibge_pib.populacao)', 'total') @@ -165,8 +166,14 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { next(); }, query, (req, res, next) => { req.result.forEach((i) => { - let value = i.total; + let value = parseFloat(i.total); + let isnum = /^\d+$/.test(value); + if (isnum == true) { + value = value.toFixed(2) + console.log(value) + } // console.log(i.total); + let res = value.toString().split("."); //rounding decimal. let decimal = Math.round(res[1].toString().substring(0,2) + (".") + res[1].toString().substring(2,3)); -- GitLab From 88bc524fbd4c3baece7d983d36665e510ebe79a1 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Mon, 10 Sep 2018 09:55:45 -0300 Subject: [PATCH 16/20] Fix return string in contract type id 1 Related simcaq/SCRUM#491 --- CHANGELOG.md | 3 +++ src/libs/convert/contractType.js | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a48b1fcd..2c4e3ec3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## UNRELEASED +### Changed +- Fix return string in contract type id 1 + ## 1.6.1 - 2018-08-23 # Changed - Fix return json name in transport route diff --git a/src/libs/convert/contractType.js b/src/libs/convert/contractType.js index 6c9167ce..a20ab853 100644 --- a/src/libs/convert/contractType.js +++ b/src/libs/convert/contractType.js @@ -1,7 +1,7 @@ -module.exports = function idhmLevel(id) { +module.exports = function contractType(id) { switch (id) { case 1: - return 'Concursado/Efetivo/Estavél'; + return 'Concursado/Efetivo/Estável'; case 2: return 'Contrato temporário'; case 3: -- GitLab From eed07b4629616e14eba2bb08747fb83c652bdc0a Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 20 Sep 2018 10:30:25 -0300 Subject: [PATCH 17/20] Add route pib/transport --- src/libs/routes/pibpercapita.js | 9 ++++++++- src/libs/routes/transport.js | 30 +++++++++++++++--------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/libs/routes/pibpercapita.js b/src/libs/routes/pibpercapita.js index bfe2c4dd..aacebe6e 100644 --- a/src/libs/routes/pibpercapita.js +++ b/src/libs/routes/pibpercapita.js @@ -155,6 +155,7 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { .group('ibge_pib.ano_censo') .group('ibge_pib.pib_per_capita') .order('ibge_pib.ano_censo') + console.log("CiTy") } else { req.sql.from('ibge_pib') .field('SUM(ibge_pib.pib)/SUM(ibge_pib.populacao)', 'total') @@ -165,8 +166,14 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { next(); }, query, (req, res, next) => { req.result.forEach((i) => { - let value = i.total; + let value = parseFloat(i.total); + let isnum = /^\d+$/.test(value); + if (isnum == true) { + value = value.toFixed(2) + console.log(value) + } // console.log(i.total); + let res = value.toString().split("."); //rounding decimal. let decimal = Math.round(res[1].toString().substring(0,2) + (".") + res[1].toString().substring(2,3)); diff --git a/src/libs/routes/transport.js b/src/libs/routes/transport.js index 266b1400..449895d0 100644 --- a/src/libs/routes/transport.js +++ b/src/libs/routes/transport.js @@ -373,14 +373,14 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Vans e Kombi let goVansAndKombi = allTransports.clone(); goVansAndKombi.field('matricula.transporte_vans_kombi','use_transport_id') - goVansAndKombi.where('matricula.transporte_vans_kombi = 1 OR matricula.transporte_vans_kombi = 0'); + goVansAndKombi.where('matricula.transporte_vans_kombi = 1'); goVansAndKombi.group('matricula.transporte_vans_kombi'); req.queryIndex.goVansAndKombi = req.querySet.push(goVansAndKombi) - 1; // Micro let goMicroBus = allTransports.clone(); goMicroBus.field('matricula.transporte_micro_onibus', 'use_transport_id') - goMicroBus.where('matricula.transporte_micro_onibus = 1 OR matricula.transporte_micro_onibus = 0'); + goMicroBus.where('matricula.transporte_micro_onibus = 1'); goMicroBus.group('matricula.transporte_micro_onibus'); req.queryIndex.goMicroBus = req.querySet.push(goMicroBus) - 1; @@ -388,63 +388,63 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { // Ônibus let goBus = allTransports.clone(); goBus.field("matricula.transporte_onibus", 'use_transport_id') - goBus.where('matricula.transporte_onibus = 1 OR matricula.transporte_onibus = 0'); + goBus.where('matricula.transporte_onibus = 1'); goBus.group('matricula.transporte_onibus') req.queryIndex.goBus = req.querySet.push(goBus) - 1; // Bicicleta let goBikes = allTransports.clone(); goBikes.field('matricula.transporte_bicicleta', 'use_transport_id') - goBikes.where('matricula.transporte_bicicleta = 1 OR matricula.transporte_bicicleta = 0'); + goBikes.where('matricula.transporte_bicicleta = 1'); goBikes.group('matricula.transporte_bicicleta') req.queryIndex.goBikes = req.querySet.push(goBikes) - 1; // Tração Animal let goAnimalTraction = allTransports.clone(); goAnimalTraction.field('matricula.transporte_animal', 'use_transport_id') - goAnimalTraction.where('matricula.transporte_animal = 1 OR matricula.transporte_animal = 0'); + goAnimalTraction.where('matricula.transporte_animal = 1'); goAnimalTraction.group('matricula.transporte_animal') req.queryIndex.goAnimalTraction = req.querySet.push(goAnimalTraction) - 1; // Outro Veículo let goOtherVehicle = allTransports.clone(); goOtherVehicle.field('matricula.transporte_outro', 'use_transport_id') - goOtherVehicle.where('matricula.transporte_outro = 1 OR matricula.transporte_outro = 0'); + goOtherVehicle.where('matricula.transporte_outro = 1'); goOtherVehicle.group('matricula.transporte_outro') req.queryIndex.goOtherVehicle = req.querySet.push(goOtherVehicle) - 1; // Aquaviário/ Embarcação (capacidade até 5 alunos) let goWaterway_5_Students = allTransports.clone(); goWaterway_5_Students.field('matricula.transporte_embar_0_5','use_transport_id') - goWaterway_5_Students.where('matricula.transporte_embar_0_5 = 1 OR matricula.transporte_embar_0_5 = 0'); + goWaterway_5_Students.where('matricula.transporte_embar_0_5 = 1'); goWaterway_5_Students.group('matricula.transporte_embar_0_5') req.queryIndex.goWaterway_5_Students = req.querySet.push(goWaterway_5_Students) - 1; // Aquaviário/ Embarcação (capacidade de 5 até 15 alunos) let goWaterway_15_Students = allTransports.clone(); goWaterway_15_Students.field('matricula.transporte_embar_5_15', 'use_transport_id') - goWaterway_15_Students.where('matricula.transporte_embar_5_15 = 1 OR matricula.transporte_embar_5_15 = 0'); + goWaterway_15_Students.where('matricula.transporte_embar_5_15 = 1'); goWaterway_15_Students.group('matricula.transporte_embar_5_15') req.queryIndex.goWaterway_15_Students = req.querySet.push(goWaterway_15_Students) - 1; // Aquaviário/ Embarcação (capacidade de 15 até 35 alunos)r let goWaterway_35_Students = allTransports.clone(); goWaterway_35_Students.field('matricula.transporte_embar_15_35', 'use_transport_id') - goWaterway_35_Students.where('matricula.transporte_embar_15_35 = 1 OR matricula.transporte_embar_15_35 = 0'); + goWaterway_35_Students.where('matricula.transporte_embar_15_35 = 1'); goWaterway_35_Students.group('matricula.transporte_embar_15_35') req.queryIndex.goWaterway_35_Students = req.querySet.push(goWaterway_35_Students) - 1; // Aquaviário/ Embarcação (capacidade mais 35 alunos) let goWaterwayMoreThan_35 = allTransports.clone(); goWaterwayMoreThan_35.field('matricula.transporte_embar_35', 'use_transport_id') - goWaterwayMoreThan_35.where('matricula.transporte_embar_35 = 1 OR matricula.transporte_embar_35 = 0'); + goWaterwayMoreThan_35.where('matricula.transporte_embar_35 = 1'); goWaterwayMoreThan_35.group('matricula.transporte_embar_35') req.queryIndex.goWaterwayMoreThan_35 = req.querySet.push(goWaterwayMoreThan_35) - 1; // Trêm / Metrô let goSubwayAndTrain = allTransports.clone(); goSubwayAndTrain.field('matricula.transporte_trem_metro', 'use_transport_id') - goSubwayAndTrain.where('matricula.transporte_trem_metro = 1 OR matricula.transporte_trem_metro = 0'); + goSubwayAndTrain.where('matricula.transporte_trem_metro = 1'); goSubwayAndTrain.group('matricula.transporte_trem_metro') req.queryIndex.goSubwayAndTrain = req.querySet.push(goSubwayAndTrain) - 1; @@ -463,8 +463,8 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { for (let i = 0; i < transport_match_0.length; i++) { transport_match_0[i].use_transport_id = true; transport_match.push(transport_match_0[i]) - transport_match_1[i].use_transport_id = false; - transport_match.push(transport_match_1[i]) + // transport_match_1[i].use_transport_id = false; + // transport_match.push(transport_match_1[i]) } //modifica adicionando use_transport_id=false, com os mesmos valores @@ -472,8 +472,8 @@ transportApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { for (let i = 0; i < all_enrollment_match_0.length; i++) { all_enrollment_match_0[i].use_transport_id = true; all_enrollment_match.push(all_enrollment_match_0[i]) - all_enrollment_match_1[i].use_transport_id = false; - all_enrollment_match.push(all_enrollment_match_1[i]) + // all_enrollment_match_1[i].use_transport_id = false; + // all_enrollment_match.push(all_enrollment_match_1[i]) } let public_transport = matchQueries(all_enrollment_match, req.result[req.queryIndex.allEnrollmentTransport]); -- GitLab From 300e4aec2216ba03a24bca05769d1ee3318433d0 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 20 Sep 2018 10:31:34 -0300 Subject: [PATCH 18/20] Remove logs --- src/libs/routes/pibpercapita.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libs/routes/pibpercapita.js b/src/libs/routes/pibpercapita.js index aacebe6e..59a74eaf 100644 --- a/src/libs/routes/pibpercapita.js +++ b/src/libs/routes/pibpercapita.js @@ -155,7 +155,6 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { .group('ibge_pib.ano_censo') .group('ibge_pib.pib_per_capita') .order('ibge_pib.ano_censo') - console.log("CiTy") } else { req.sql.from('ibge_pib') .field('SUM(ibge_pib.pib)/SUM(ibge_pib.populacao)', 'total') @@ -170,7 +169,6 @@ pibpercapitaApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { let isnum = /^\d+$/.test(value); if (isnum == true) { value = value.toFixed(2) - console.log(value) } // console.log(i.total); -- GitLab From dcdf16631baa3b6dd7579f893bd5222160c3a88b Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 20 Sep 2018 10:33:43 -0300 Subject: [PATCH 19/20] Change population filter name --- src/libs/convert/citySize.js | 2 +- src/libs/routes/infrastructure.js | 25 ++++++++++++++++--------- src/libs/routes/population.js | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/libs/convert/citySize.js b/src/libs/convert/citySize.js index 819eb150..3f50462b 100644 --- a/src/libs/convert/citySize.js +++ b/src/libs/convert/citySize.js @@ -1,7 +1,7 @@ module.exports = function citySize(id) { switch (id) { case 1: - return 'até 5000'; + return '0 - 5000'; case 2: return '5001 - 10000'; case 3: diff --git a/src/libs/routes/infrastructure.js b/src/libs/routes/infrastructure.js index 290bf1a0..8b01e338 100644 --- a/src/libs/routes/infrastructure.js +++ b/src/libs/routes/infrastructure.js @@ -67,19 +67,26 @@ infrastructureApp.get('/rural_location', (req, res, next) => { }, response('rural_location')); infrastructureApp.get('/adm_dependency', (req, res, next) => { - req.sql.from('dependencia_adm') - .field('id') - .field('nome', 'name') - .where('id <= 4'); + req.result = []; + for(let i = 1; i <= 4; ++i) { + req.result.push({ + id: i, + name: id2str.admDependency(i) + }); + }; next(); -}, query, response('adm_dependency')); +}, response('adm_dependency')); infrastructureApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm_priv') - .field('id', 'id') - .field('nome', 'name'); + req.result = []; + for(let i = 1; i <= 6; ++i) { + req.result.push({ + id: i, + name: id2str.admDependencyPriv(i) + }); + }; next(); -}, query, response('adm_dependency_detailed')); +}, response('adm_dependency_detailed')); rqf.addField({ name: 'filter', diff --git a/src/libs/routes/population.js b/src/libs/routes/population.js index cd307cdb..f0402daa 100644 --- a/src/libs/routes/population.js +++ b/src/libs/routes/population.js @@ -41,7 +41,7 @@ populationApp.get('/years', (req, res, next) => { populationApp.get('/city_size', (req, res, next) => { req.result = [ - {id: 1, name: "até 5000"}, + {id: 1, name: "0 - 5000"}, {id: 2, name: "5001 - 10000"}, {id: 3, name: "10001 - 20000"}, {id: 4, name: "20001 - 50000"}, -- GitLab From 4344d1d71006d0bfbbb36783e1cb274a5e1e6108 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Thu, 20 Sep 2018 10:58:15 -0300 Subject: [PATCH 20/20] Update changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a5ddfd5..59101d98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## 1.7.0 - 2018-09-20 +# Changed +- Fix out of school route +- Fix pib-per-capita route +- Fix filters in infrastructure route +- Remove filters in transport route + ## 1.6.1 - 2018-08-23 # Changed - Fix return json name in transport route -- GitLab