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('').attr('value', id).html(safeCapitalize(value)));
+
+ var opt = $j('').attr('value', id);
+
+ var newValue = value;
+ if (typeof(value) == 'object') {
+ $j.each(value, function(optId, optValue) {
+ if (optId != 'value') {
+ opt.data(optId, optValue);
+ } else {
+ newValue = optValue;
+ }
+ });
+ }
+
+ opt.html(safeCapitalize(newValue));
+
+ options.push(opt);
});
return options;
diff --git a/ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php b/ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
index 08b9eee..4a963d2 100644
--- a/ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
+++ b/ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
@@ -71,29 +71,35 @@ class ComponenteCurricularController extends ApiCoreController
}
else {
- $sql = "select cc.id, cc.nome
- from pmieducar.turma, modules.componente_curricular_turma as cct, modules.componente_curricular as cc,
+ $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento
+ from pmieducar.turma, modules.componente_curricular_turma as cct, modules.componente_curricular as cc, modules.area_conhecimento as ac,
pmieducar.escola_ano_letivo as al 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 cct.escola_id = al.ref_cod_escola and cc.area_conhecimento_id = ac.id
+ order by ac.nome, cc.nome";
$componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano));
if (count($ComponentesCurriculares) < 1) {
- $sql = "select cc.id, cc.nome from
+ $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento from
pmieducar.turma as t, pmieducar.escola_serie_disciplina as esd, modules.componente_curricular
- as cc, pmieducar.escola_ano_letivo as al where t.cod_turma = $1 and esd.ref_ref_cod_escola =
+ as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al where t.cod_turma = $1 and esd.ref_ref_cod_escola =
t.ref_ref_cod_escola and esd.ref_ref_cod_serie = t.ref_ref_cod_serie and esd.ref_cod_disciplina =
cc.id and al.ano = $2 and esd.ref_ref_cod_escola = al.ref_cod_escola and t.ativo = 1 and
- esd.ativo = 1 and al.ativo = 1";
+ esd.ativo = 1 and al.ativo = 1 and cc.area_conhecimento_id = ac.id
+ order by ac.nome, cc.nome";
$componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano));
}
}
$options = array();
- foreach ($componentesCurriculares as $componenteCurricular)
- $options['__' . $componenteCurricular['id']] = $this->toUtf8($componenteCurricular['nome']);
+ foreach ($componentesCurriculares as $componenteCurricular) {
+ $options['__' . $componenteCurricular['id']] = array(
+ 'value' => $this->toUtf8($componenteCurricular['nome']),
+ 'group' => $this->toUtf8($componenteCurricular['area_conhecimento'])
+ );
+ }
return array('options' => $options);
}
--
libgit2 0.21.2