From 49c6eaf0b8737e2474ef29549a00b5893c250eec Mon Sep 17 00:00:00 2001 From: Thieres Tembra Date: Thu, 9 Jan 2014 11:17:44 -0300 Subject: [PATCH] Modificado a rotina de Lançamento de Faltas/Notas para: --- ieducar/intranet/styles/mytdt.css | 16 ++++++++++++++++ ieducar/intranet/templates/nvp_htmlhead.tpl | 1 + ieducar/lib/Portabilis/Business/Professor.php | 16 +++++++++------- ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js | 45 +++++++++++++++++++++++++++++++++++++++------ ieducar/modules/Avaliacao/Views/DiarioApiController.php | 45 +++++++++++++++++++++++++++++++++++++++++---- ieducar/modules/DynamicInput/Assets/Javascripts/DynamicInput.js | 40 ++++++++++++++++++++++++++++++++++++---- ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php | 22 ++++++++++++++-------- 7 files changed, 156 insertions(+), 29 deletions(-) create mode 100644 ieducar/intranet/styles/mytdt.css diff --git a/ieducar/intranet/styles/mytdt.css b/ieducar/intranet/styles/mytdt.css new file mode 100644 index 0000000..cb8983b --- /dev/null +++ b/ieducar/intranet/styles/mytdt.css @@ -0,0 +1,16 @@ +/* + * Module: Avaliacao + * Controller: Diario + * + * Referente a linha adicionada na tabela de Lançamentos + * de Faltas/Notas para a Área de Conhecimento + * + * @author Thieres Tembra + * @company MyTDT Corporation [http://www.mytdt.com.br] + */ +td.area-conhecimento { + background-color: #546C76; + color: #FFF; + font-weight: bold; + text-align: left; +} diff --git a/ieducar/intranet/templates/nvp_htmlhead.tpl b/ieducar/intranet/templates/nvp_htmlhead.tpl index bbd6b90..c25a43d 100755 --- a/ieducar/intranet/templates/nvp_htmlhead.tpl +++ b/ieducar/intranet/templates/nvp_htmlhead.tpl @@ -17,6 +17,7 @@ + diff --git a/ieducar/lib/Portabilis/Business/Professor.php b/ieducar/lib/Portabilis/Business/Professor.php index cc08854..68303fc 100644 --- a/ieducar/lib/Portabilis/Business/Professor.php +++ b/ieducar/lib/Portabilis/Business/Professor.php @@ -102,13 +102,14 @@ class Portabilis_Business_Professor { protected static function componentesCurricularesTurmaAlocado($turmaId, $anoLetivo, $userId) { - $sql = "select cc.id, cc.nome - from modules.componente_curricular_turma as cct, pmieducar.turma, modules.componente_curricular as cc, + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento + from modules.componente_curricular_turma as cct, pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al, pmieducar.servidor_disciplina as scc where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and cct.escola_id = turma.ref_ref_cod_escola and cct.componente_curricular_id = cc.id and al.ano = $2 and cct.escola_id = al.ref_cod_escola and scc.ref_ref_cod_instituicao = turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and - scc.ref_cod_curso = turma.ref_cod_curso and scc.ref_cod_disciplina = cc.id"; + scc.ref_cod_curso = turma.ref_cod_curso and scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id + order by ac.nome, cc.nome"; $options = array('params' => array($turmaId, $anoLetivo, $userId)); @@ -117,14 +118,15 @@ class Portabilis_Business_Professor { protected static function componentesCurricularesCursoAlocado($turmaId, $anoLetivo, $userId) { - $sql = "select cc.id as id, cc.nome as nome from pmieducar.serie, pmieducar.escola_serie_disciplina as esd, - pmieducar.turma, modules.componente_curricular as cc, pmieducar.escola_ano_letivo as al, + $sql = "select cc.id as id, cc.nome as nome, ac.nome as area_conhecimento from pmieducar.serie, pmieducar.escola_serie_disciplina as esd, + pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al, pmieducar.servidor_disciplina as scc where turma.cod_turma = $1 and serie.cod_serie = turma.ref_ref_cod_serie and esd.ref_ref_cod_escola = turma.ref_ref_cod_escola and esd.ref_ref_cod_serie = serie.cod_serie and esd.ref_cod_disciplina = cc.id and al.ano = $2 and esd.ref_ref_cod_escola = al.ref_cod_escola and serie.ativo = 1 and esd.ativo = 1 and al.ativo = 1 and scc.ref_ref_cod_instituicao = turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and scc.ref_cod_curso = serie.ref_cod_curso and - scc.ref_cod_disciplina = cc.id"; + scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id + order by ac.nome, cc.nome"; $options = array('params' => array($turmaId, $anoLetivo, $userId)); @@ -142,4 +144,4 @@ class Portabilis_Business_Professor { protected static function fetchPreparedQuery($sql, $options = array()) { return Portabilis_Utils_Database::fetchPreparedQuery($sql, $options); } -} \ No newline at end of file +} diff --git a/ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js b/ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js index d69abe8..6b5f9ef 100644 --- a/ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js +++ b/ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js @@ -453,8 +453,10 @@ function setTableSearchDetails($tableSearchDetails, dataDetails) { //set headers table var $linha = $j(''); - if (componenteCurricularSelected) + if (componenteCurricularSelected) { + $j('').html('Área de Conhecimento').appendTo($linha); $j('').html('Componente curricular').appendTo($linha); + } $j('').html('Etapa').appendTo($linha); $j('').html('Turma').appendTo($linha); @@ -470,8 +472,10 @@ function setTableSearchDetails($tableSearchDetails, dataDetails) { var $linha = $j('').addClass('cellColor'); - if (componenteCurricularSelected) - $j('').html(safeToUpperCase($j('#ref_cod_componente_curricular').children("[selected='selected']").html())).appendTo($linha); + if (componenteCurricularSelected) { + $j('').html(safeToUpperCase($j('#ref_cod_componente_curricular optgroup').children("[selected='selected']").parent().attr('label'))).appendTo($linha); + $j('').html(safeToUpperCase($j('#ref_cod_componente_curricular optgroup').children("[selected='selected']").html())).appendTo($linha); + } $j('').html(safeToUpperCase($j('#etapa').children("[selected='selected']").html())).appendTo($linha); $j('').html(safeToUpperCase($j('#ref_cod_turma').children("[selected='selected']").html())).appendTo($linha); @@ -547,7 +551,7 @@ function handleSearch($resultTable, dataResponse) { // seta colspan [th, td].aluno quando exibe nota exame if ($tableSearchDetails.data('details').tipo_nota != 'nenhum' && $tableSearchDetails.data('details').quantidade_etapas == $j('#etapa').val()) { - $resultTable.find('[colspan]').attr('colspan', componenteCurricularSelected ? 1 : 5); + $resultTable.find('[colspan]:not(.area-conhecimento)').attr('colspan', componenteCurricularSelected ? 1 : 5); } $resultTable.find('tr:even').addClass('even'); @@ -709,14 +713,29 @@ function updateComponenteCurriculares($targetElement, matriculaId, componentesCu var useNota = $tableSearchDetails.data('details').tipo_nota != 'nenhum'; var useParecer = $tableSearchDetails.data('details').tipo_parecer_descritivo != 'nenhum'; + var areas = new Array(); + var $ccHeader = $j('').addClass('strong'); $j('').addClass('center').html('Componente curricular').appendTo($ccHeader); updateComponenteCurricularHeaders($ccHeader, $j('')); $ccHeader.appendTo($targetElement); + + var areaColspan = $j('td', $ccHeader).length; + $j.each(componentesCurriculares, function(index, cc) { + if (areas.indexOf(cc.area_id) == -1) { + areas.push(cc.area_id); + + var $areaRow = $j(''); + + $j('').addClass('area-conhecimento').attr('colspan', areaColspan).html(cc.area_nome).appendTo($areaRow); + + $areaRow.appendTo($targetElement); + } + var $ccRow = $j(''); $j('').addClass('center').html(cc.nome).appendTo($ccRow); @@ -764,9 +783,23 @@ function canSearch(){ return true; } +function myNextValid($selectElement) { + var a = $selectElement.find('option:selected'); + if (a.next('option').length == 0) { + b = a.parent(); + if (b.prop('tagName').toUpperCase() == 'SELECT') { + return null; + } else { + return b.next().children('option:first'); + } + } else { + return a.next('option'); + } +} + function selectNextOption($selectElement){ - var $nextOption = $selectElement.find('option:selected').next('option'); - + var $nextOption = myNextValid($selectElement); + if ($nextOption.val() != undefined) { $selectElement.val($nextOption.val()); diff --git a/ieducar/modules/Avaliacao/Views/DiarioApiController.php b/ieducar/modules/Avaliacao/Views/DiarioApiController.php index 538cb32..a289347 100644 --- a/ieducar/modules/Avaliacao/Views/DiarioApiController.php +++ b/ieducar/modules/Avaliacao/Views/DiarioApiController.php @@ -748,20 +748,57 @@ class DiarioApiController extends ApiCoreController $componente = array(); $componente['id'] = $_componente->get('id'); - $componente['nome'] = $this->safeString($_componente->get('nome')); + $componente['nome'] = $this->safeString(strtoupper($_componente->get('nome')), false); $componente['nota_atual'] = $this->getNotaAtual($etapa = null, $componente['id']); $componente['nota_exame'] = $this->getNotaExame($componente['id']); //$componente['nota_necessaria_exame'] = $this->getNotaNecessariaExame($componente['id']); $componente['falta_atual'] = $this->getFaltaAtual($etapa = null, $componente['id']); $componente['parecer_atual'] = $this->getParecerAtual($componente['id']); $componente['situacao'] = $this->getSituacaoMatricula($componente['id']); + + //buscando pela área do conhecimento + $area = $this->getAreaConhecimento($componente['id']); + $componente['area_id'] = $area->id; + $componente['area_nome'] = $this->safeString(strtoupper($area->nome), false); + + //criando chave para ordenamento temporário + //área de conhecimento + componente curricular + $componente['my_order'] = Portabilis_String_Utils::unaccent(strtoupper($area->nome)) . Portabilis_String_Utils::unaccent(strtoupper($_componente->get('nome'))); $componentesCurriculares[] = $componente; } - // ordenado por id, da mesma maneira que nos boletins, - // obs: poderá ainda ocorrer diferença entre a ordem das areas de conhecimento? - return Portabilis_Array_Utils::sortByKey('id', $componentesCurriculares); + //ordenando pela chave temporária criada + $componentesCurriculares = Portabilis_Array_Utils::sortByKey('my_order', $componentesCurriculares); + + //removendo chave temporária + $len = count($componentesCurriculares); + for ($i = 0; $i < $len; $i++) { + unset($componentesCurriculares[$i]['my_order']); + } + return $componentesCurriculares; + } + + protected function getAreaConhecimento($componenteCurricularId = null) { + if (is_null($componenteCurricularId)) + $componenteCurricularId = $this->getRequest()->componente_curricular_id; + + if (! is_numeric($componenteCurricularId)) { + throw new Exception('Não foi possível obter a área de conhecimento pois não foi recebido o id do componente curricular.'); + } + + require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php'; + $mapper = new ComponenteCurricular_Model_ComponenteDataMapper(); + + $where = array('id' => $componenteCurricularId); + + $area = $mapper->findAll(array('area_conhecimento'), $where); + + $areaConhecimento = new stdClass(); + $areaConhecimento->id = $area[0]->area_conhecimento->id; + $areaConhecimento->nome = $area[0]->area_conhecimento->nome; + + return $areaConhecimento; } diff --git a/ieducar/modules/DynamicInput/Assets/Javascripts/DynamicInput.js b/ieducar/modules/DynamicInput/Assets/Javascripts/DynamicInput.js index 5b07cd1..8f9f2ad 100644 --- a/ieducar/modules/DynamicInput/Assets/Javascripts/DynamicInput.js +++ b/ieducar/modules/DynamicInput/Assets/Javascripts/DynamicInput.js @@ -1,9 +1,26 @@ function updateSelect($targetElement, options, emptyOptionHtml) { $targetElement.children().not('[value=""]').remove(); - + + var groups = new Array(); + var optgroup = null; + $j.each(options, function(index, value){ - $j(value).appendTo($targetElement); + if ($j(value).data('group')) { + if (groups.indexOf($j(value).data('group')) == -1) { + if (optgroup != null) { + optgroup.appendTo($targetElement); + } + optgroup = $j('').attr('label', $j(value).data('group')); + groups.push($j(value).data('group')); + } + $j(value).appendTo(optgroup); + } else { + $j(value).appendTo($targetElement); + } }); + if (optgroup != null) { + optgroup.appendTo($targetElement); + } if (options.length > 0) { $targetElement.removeAttr('disabled'); @@ -56,8 +73,23 @@ function jsonResourcesToSelectOptions(resources) { if (id.indexOf && id.substr && id.indexOf('__') == 0) id = id.substr(2); - - options.push($j('