Skip to content
Snippets Groups Projects

Release v1.7.0

Merged Vytor Calixto requested to merge release_v1.7.0 into master
1 file
+ 72
34
Compare changes
  • Side-by-side
  • Inline
@@ -298,7 +298,7 @@ classCountApp.get('/source', (req, res, next) => {
@@ -298,7 +298,7 @@ classCountApp.get('/source', (req, res, next) => {
next();
next();
}, query, response('source'));
}, query, response('source'));
function mediaCalc(response) {
function averageCalc(response) {
let obj = [];
let obj = [];
response.forEach((result) => {
response.forEach((result) => {
let newObj = {};
let newObj = {};
@@ -307,13 +307,15 @@ function mediaCalc(response) {
@@ -307,13 +307,15 @@ function mediaCalc(response) {
if(key !== "total_classes" && key !== "total_enrollment")
if(key !== "total_classes" && key !== "total_enrollment")
newObj[key] = result[key]
newObj[key] = result[key]
})
})
newObj.total = result.total_enrollment / result.total_classes;
newObj.average = result.total_enrollment / result.total_classes;
obj.push(newObj);
obj.push(newObj);
});
});
return(obj);
return(obj);
}
}
 
// LDE
classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
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)) {
if(("education_level_mod" in req.dims) || ("education_level_mod" in req.filter)) {
req.sql.field('COUNT(turma.id)', 'total_classes')
req.sql.field('COUNT(turma.id)', 'total_classes')
.field('SUM(turma.num_matricula)', 'total_enrollment')
.field('SUM(turma.num_matricula)', 'total_enrollment')
@@ -332,32 +334,56 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
@@ -332,32 +334,56 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
});
});
}
}
}, rqf.build(), query, id2str.transform(), (req, res, next) => {
}, rqf.build(), query, id2str.transform(), (req, res, next) => {
req.partial = req.result;
req.partial = [];
req.resetSql();
req.dims = {};
// Caso tenha apenas uma dimensão, a indicador possuirá uma linha de total
req.filter = {};
if((req.dims) && (req.dims.size == 1)) {
req.sql.field('COUNT(turma.id)', 'total_classes')
req.partial = req.result;
.field('SUM(turma.num_matricula)', 'total_enrollment')
.field("'Brasil'", 'name')
// 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
.field('turma.ano_censo', 'year')
let yearFilter = {};
.from('turma')
if("min_year" in req.filter)
.group('turma.ano_censo')
yearFilter.min_year = req.filter.min_year;
.order('turma.ano_censo')
if("max_year" in req.filter)
.where('turma.tipo_turma_id = 0 AND turma.etapas_mod_ensino_segmento_id >= 1 AND turma.etapas_mod_ensino_segmento_id <= 10');
yearFilter.max_year = req.filter.max_year;
next();
}, query, addMissing(rqf), id2str.transform(), (req, res, next) => {
// Faz a consulta sem dimensões, do total do(s) ano(s) escolhido(s)
const classCount = mediaCalc(req.partial);
req.resetSql();
const yearClassCount = mediaCalc(req.result);
req.dims = {};
req.result = classCount;
req.filter = yearFilter;
yearClassCount.forEach((result) => {
req.sql.field('COUNT(turma.id)', 'total_classes')
let obj = {};
.field('SUM(turma.num_matricula)', 'total_enrollment')
obj = result;
.field("'Brasil'", 'name')
obj.label = "total_year_media";
.field('turma.ano_censo', 'year')
req.result.push(obj);
.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();
next();
}, response('class_count'));
}, response('class_count'));
 
// SimCAQ
classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => {
classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => {
req.sql.field('COUNT(turma.id)', 'total_classes')
req.sql.field('COUNT(turma.id)', 'total_classes')
.field('SUM(turma.num_matricula)', 'total_enrollment')
.field('SUM(turma.num_matricula)', 'total_enrollment')
@@ -368,13 +394,22 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => {
@@ -368,13 +394,22 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => {
.order('turma.ano_censo')
.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)');
.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();
next();
}, query, id2str.transform(), (req, res, next) => {
}, rqf.build(), query, id2str.transform(), (req, res, next) => {
req.partial = [];
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;
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.resetSql();
req.dims = {};
req.dims = {};
req.filter = {};
req.filter = yearFilter;
req.sql.field('COUNT(turma.id)', 'total_classes')
req.sql.field('COUNT(turma.id)', 'total_classes')
.field('SUM(turma.num_matricula)', 'total_enrollment')
.field('SUM(turma.num_matricula)', 'total_enrollment')
.field("'Brasil'", 'name')
.field("'Brasil'", 'name')
@@ -385,20 +420,23 @@ classCountApp.get('/count', rqf.parse(), rqf.build(), (req, res, next) => {
@@ -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)');
.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();
next();
}, query, addMissing(rqf), id2str.transform(), (req, res, next) => {
}, rqf.build(), query, addMissing(rqf), id2str.transform(), (req, res, next) => {
if(req.partial.length > 0) {
if(req.partial.length > 0) {
const classCount = mediaCalc(req.partial);
const classCount = averageCalc(req.partial);
const yearClassCount = mediaCalc(req.result);
const yearClassCount = averageCalc(req.result);
req.result = classCount;
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) => {
yearClassCount.forEach((result) => {
let obj = {};
let obj = {};
obj = result;
obj = result;
obj.label = "total_year_media";
obj.label = "total_year_average";
req.result.push(obj);
req.result.push(obj);
})
})
}
}
else {
else {
const classCount = mediaCalc(req.result);
const classCount = averageCalc(req.result);
req.result = classCount;
req.result = classCount;
}
}
next();
next();
Loading