Commit cbb1cb0665958e01464b99a1eecf1ee61ca5edaa

Authored by Thieres Tembra
1 parent 49c6eaf0
Exists in master

Modificado a rotina de Lançamento de Faltas/Notas para:

1) Adicionar o campo "Seção" criado no cadastro de Área de Conhecimento
para melhor entendimento do usuário na leitura das áreas de conhecimento
que agrupam os componentes.

2) Fazer de cada agrupamento da Área de Conhecimento um menu "dropdown"
para diminuir a quantidade de informação apresentada ao usuário de uma
única só vez, deixando com que o mesmo escolha qual área quer
expandir/recolher para realizar o lançamento das notas e faltas.

/*
 * Modificações por arquivo/pasta
 */

[1] File: /ieducar/modules/Avaliacao/Views/DiarioApiController.php
    - Modificado o método "loadComponentesCurricularesForMatricula":
      * Criado variável "$nomeArea" com o resultado da concatenação das
variáveis "$area->secao" e "$area->nome"
        + OBS: Se o campo seção estiver em branco, o mesmo não será
considerado. Caso esteja preenchido os textos concatenados serão
separados por um hífen (" - ") para melhor leitura do texto.
      * Alterado conteúdo da variável "$componente['area_nome']" para
agora utilizar a nova variável "$nomeArea"
      * Alterado conteúdo da variável "$componente['my_order']" para
agora utilizar a nova variável "$nomeArea"
    - Modificado o método "getAreaConhecimento":
      * Criado nova propriedade "secao" na classe padrão
"$areaConhecimento" para guardar o novo campo "Seção" da Área de
Conhecimento


[2] File: /ieducar/modules/Avaliacao/Assets/Diario.js
    - Modificado a função "updateComponenteCurriculares()":
      * Criado nova variável "setaDireita" para contemplar o HTML
referente a imagem do arquivo [6]
      * Criado nova variável "setaBaixo" para contemplar o HTML
referente a imagem do arquivo [5]
      * Removido o cabeçalho dos componentes curriculares ($ccHeader) da
posição abaixo dos dados do aluno
      * Adicionado um cabeçalho dos componentes curriculares ($ccHeader)
para cada grupo de área de conhecimento
      * Adicionado classe "tr-area-conhecimento" e atributo data
"areaid" para cada linha referente ao grupo da área de conhecimento com
seu respectivo id
      * Adicionado classe "tr-componente-curricular" para o cabeçalho e
para cada linha dos componentes curriculares com o respectivo id da área
de conhecimento a qual pertence
      * Adicionado evento "click", responsável pela animação do menu
dropdown, em cada linha referente ao grupo da área de conhecimento
    - Adicionado plugin "slideRow" no jQuery


[3] File: /ieducar/intranet/styles/mytdt.css
    - Modificado estilo da classe "area-conhecimento"
    - Adicionado estilo da classe "area-conhecimento-destaque" para
utilizar quando a área de conhecimento estiver expandida
    - Adicionado estilo da classe "area-conhecimento-seta" referente as
setas que informam se a área de conhecimento está expandida ou recolhida
    - Adicionado estilo da classe "seta-baixo" referente a seta que
informa se a área de conhecimento está expandida
    - Adicionado estilo da classe "tr-componente-curricular" referente
aos componentes curriculares


[4] Folder: /ieducar/intranet/imagens/mytdt/
    - Nova pasta criada para contemplar as imagens das contribuições da
MyTDT Corp. para o i-Educar


[5] File: /ieducar/intranet/imagens/mytdt/seta-branca-baixo.png
    - Imagem de seta na cor branca apontando para baixo para sinalizar a
área de conhecimento expandida 


[6] File: /ieducar/intranet/imagens/mytdt/seta-preta-direita.png
    - Imagem de seta na cor preta apontando para direita para sinalizar
a área de conhecimento recolhida


[7] File: /ieducar/lib/Portabilis/Business/Professor.php
    - Modificado as queries dos métodos
"componentesCurricularesTurmaAlocado()" e
"componentesCurricularesCursoAlocado()":
      * Adicionado campo (SELECT) "ac.secao as secao_area_conhecimento"
      * Adicionado ordenamento (ORDER) "ac.secao"


[8] File:
/ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
    - Modificado as duas queries do método
"getComponentesCurriculares()":
      * Adicionado campo (SELECT) "ac.secao as secao_area_conhecimento"
      * Adicionado ordenamento (ORDER) "ac.secao"
    - Alterado o conteúdo da chave "group" da variável "$options[]":
Agora a variável contém o resultado da concatenação dos campos
"secao_area_conhecimento" e "area_conhecimento" retornados por uma das
queries mencionadas acima ou no
arquivo [4]
      * OBS: Se o campo seção estiver em branco, o mesmo não será
considerado. Caso esteja preenchido os textos concatenados serão
separados por um hífen (" - ") para melhor leitura do texto.


Change-Id: Id482706ce383a839d8bc70cd49b36a11fad2ed8d
Signed-off-by: Thieres Tembra <tdt@mytdt.com.br>
ieducar/intranet/imagens/mytdt/seta-branca-baixo.png 0 → 100644

2.85 KB

ieducar/intranet/imagens/mytdt/seta-preta-direita.png 0 → 100644

2.83 KB

ieducar/intranet/styles/mytdt.css
@@ -9,8 +9,29 @@ @@ -9,8 +9,29 @@
9 * @company MyTDT Corporation [http://www.mytdt.com.br] 9 * @company MyTDT Corporation [http://www.mytdt.com.br]
10 */ 10 */
11 td.area-conhecimento { 11 td.area-conhecimento {
12 - background-color: #546C76;  
13 - color: #FFF; 12 + background-color: #A1B3BD;
  13 + color: #000;
14 font-weight: bold; 14 font-weight: bold;
15 text-align: left; 15 text-align: left;
  16 + cursor: pointer;
  17 +}
  18 +
  19 +td.area-conhecimento-destaque {
  20 + background-color: #546C76 !important;
  21 + color: #FFF !important;
  22 +}
  23 +
  24 +td.area-conhecimento img.area-conhecimento-seta {
  25 + -moz-user-select: none;
  26 + outline: none;
  27 + border: 0;
  28 + margin-top: -1px;
  29 +}
  30 +
  31 +td.area-conhecimento img.seta-baixo {
  32 + display: none;
  33 +}
  34 +
  35 +.tr-componente-curricular {
  36 + display: none;
16 } 37 }
ieducar/lib/Portabilis/Business/Professor.php
@@ -102,14 +102,14 @@ class Portabilis_Business_Professor { @@ -102,14 +102,14 @@ class Portabilis_Business_Professor {
102 102
103 103
104 protected static function componentesCurricularesTurmaAlocado($turmaId, $anoLetivo, $userId) { 104 protected static function componentesCurricularesTurmaAlocado($turmaId, $anoLetivo, $userId) {
105 - $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento 105 + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento
106 from modules.componente_curricular_turma as cct, pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac, 106 from modules.componente_curricular_turma as cct, pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac,
107 pmieducar.escola_ano_letivo as al, pmieducar.servidor_disciplina as scc 107 pmieducar.escola_ano_letivo as al, pmieducar.servidor_disciplina as scc
108 where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and cct.escola_id = turma.ref_ref_cod_escola 108 where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and cct.escola_id = turma.ref_ref_cod_escola
109 and cct.componente_curricular_id = cc.id and al.ano = $2 and cct.escola_id = al.ref_cod_escola and 109 and cct.componente_curricular_id = cc.id and al.ano = $2 and cct.escola_id = al.ref_cod_escola and
110 scc.ref_ref_cod_instituicao = turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and 110 scc.ref_ref_cod_instituicao = turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and
111 scc.ref_cod_curso = turma.ref_cod_curso and scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id 111 scc.ref_cod_curso = turma.ref_cod_curso and scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id
112 - order by ac.nome, cc.nome"; 112 + order by ac.secao, ac.nome, cc.nome";
113 113
114 $options = array('params' => array($turmaId, $anoLetivo, $userId)); 114 $options = array('params' => array($turmaId, $anoLetivo, $userId));
115 115
@@ -118,7 +118,7 @@ class Portabilis_Business_Professor { @@ -118,7 +118,7 @@ class Portabilis_Business_Professor {
118 118
119 119
120 protected static function componentesCurricularesCursoAlocado($turmaId, $anoLetivo, $userId) { 120 protected static function componentesCurricularesCursoAlocado($turmaId, $anoLetivo, $userId) {
121 - $sql = "select cc.id as id, cc.nome as nome, ac.nome as area_conhecimento from pmieducar.serie, pmieducar.escola_serie_disciplina as esd, 121 + $sql = "select cc.id as id, cc.nome as nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento from pmieducar.serie, pmieducar.escola_serie_disciplina as esd,
122 pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al, 122 pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al,
123 pmieducar.servidor_disciplina as scc where turma.cod_turma = $1 and serie.cod_serie = 123 pmieducar.servidor_disciplina as scc where turma.cod_turma = $1 and serie.cod_serie =
124 turma.ref_ref_cod_serie and esd.ref_ref_cod_escola = turma.ref_ref_cod_escola and esd.ref_ref_cod_serie = 124 turma.ref_ref_cod_serie and esd.ref_ref_cod_escola = turma.ref_ref_cod_escola and esd.ref_ref_cod_serie =
@@ -126,7 +126,7 @@ class Portabilis_Business_Professor { @@ -126,7 +126,7 @@ class Portabilis_Business_Professor {
126 al.ref_cod_escola and serie.ativo = 1 and esd.ativo = 1 and al.ativo = 1 and scc.ref_ref_cod_instituicao = 126 al.ref_cod_escola and serie.ativo = 1 and esd.ativo = 1 and al.ativo = 1 and scc.ref_ref_cod_instituicao =
127 turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and scc.ref_cod_curso = serie.ref_cod_curso and 127 turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and scc.ref_cod_curso = serie.ref_cod_curso and
128 scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id 128 scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id
129 - order by ac.nome, cc.nome"; 129 + order by ac.secao, ac.nome, cc.nome";
130 130
131 $options = array('params' => array($turmaId, $anoLetivo, $userId)); 131 $options = array('params' => array($turmaId, $anoLetivo, $userId));
132 132
ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js
@@ -715,34 +715,61 @@ function updateComponenteCurriculares($targetElement, matriculaId, componentesCu @@ -715,34 +715,61 @@ function updateComponenteCurriculares($targetElement, matriculaId, componentesCu
715 715
716 var areas = new Array(); 716 var areas = new Array();
717 717
718 - var $ccHeader = $j('<tr />').addClass('strong');  
719 -  
720 - $j('<td />').addClass('center').html('Componente curricular').appendTo($ccHeader);  
721 - updateComponenteCurricularHeaders($ccHeader, $j('<td />'));  
722 -  
723 - $ccHeader.appendTo($targetElement);  
724 -  
725 - var areaColspan = $j('td', $ccHeader).length;  
726 - 718 + var setaDireita = "<img src=\"imagens/mytdt/seta-preta-direita.png\" align=\"top\" class=\"area-conhecimento-seta seta-direita\" />";
  719 + var setaBaixo = "<img src=\"imagens/mytdt/seta-branca-baixo.png\" align=\"top\" class=\"area-conhecimento-seta seta-baixo\" />";
727 720
728 $j.each(componentesCurriculares, function(index, cc) { 721 $j.each(componentesCurriculares, function(index, cc) {
729 if (areas.indexOf(cc.area_id) == -1) { 722 if (areas.indexOf(cc.area_id) == -1) {
730 areas.push(cc.area_id); 723 areas.push(cc.area_id);
731 724
732 - var $areaRow = $j('<tr />'); 725 + //primeiro o header para calcular o colspan
  726 + var $ccHeader = $j('<tr />').addClass('strong').addClass('tr-componente-curricular').data('areaid', cc.area_id);
  727 + $j('<td />').addClass('center').html('Componente curricular').appendTo($ccHeader);
  728 + updateComponenteCurricularHeaders($ccHeader, $j('<td />'));
733 729
734 - $j('<td />').addClass('area-conhecimento').attr('colspan', areaColspan).html(cc.area_nome).appendTo($areaRow); 730 + //pegando o colspan
  731 + var areaColspan = $j('td', $ccHeader).length;
735 732
  733 + var $areaRow = $j('<tr />').addClass('tr-area-conhecimento').data('areaid', cc.area_id);
  734 + var conteudo = setaDireita + setaBaixo + " " + cc.area_nome;
  735 + $j('<td />').addClass('area-conhecimento').attr('colspan', areaColspan).html(conteudo).appendTo($areaRow);
  736 +
  737 + //por fim adicionando primeiro a área depois o header
736 $areaRow.appendTo($targetElement); 738 $areaRow.appendTo($targetElement);
  739 + $ccHeader.appendTo($targetElement);
737 } 740 }
738 741
739 - var $ccRow = $j('<tr />'); 742 + var $ccRow = $j('<tr />').addClass('tr-componente-curricular').data('areaid', cc.area_id);
740 743
741 $j('<td />').addClass('center').html(cc.nome).appendTo($ccRow); 744 $j('<td />').addClass('center').html(cc.nome).appendTo($ccRow);
742 updateComponenteCurricular($ccRow, matriculaId, cc); 745 updateComponenteCurricular($ccRow, matriculaId, cc);
743 746
744 $ccRow.appendTo($targetElement); 747 $ccRow.appendTo($targetElement);
745 }); 748 });
  749 +
  750 + $j('.tr-area-conhecimento').bind('click', function() {
  751 + $j('td', this).toggleClass('area-conhecimento-destaque');
  752 +
  753 + var fechado = $j('.seta-baixo', this).is(':hidden');
  754 + if (fechado) {
  755 + $j('.seta-baixo', this).css('display', 'inline');
  756 + $j('.seta-direita', this).css('display', 'none');
  757 + } else {
  758 + $j('.seta-baixo', this).css('display', 'none');
  759 + $j('.seta-direita', this).css('display', 'inline');
  760 + }
  761 +
  762 + var id = $j(this).data('areaid');
  763 + $j('.tr-componente-curricular').each(function() {
  764 + if ($j(this).data('areaid') == id) {
  765 + if ($j(this).is(':hidden')) {
  766 + $j(this).slideRow('down');
  767 + } else {
  768 + $j(this).slideRow('up');
  769 + }
  770 + }
  771 + });
  772 + });
746 } 773 }
747 774
748 775
@@ -837,3 +864,112 @@ function showNextSelectionButton() { @@ -837,3 +864,112 @@ function showNextSelectionButton() {
837 .appendTo($navActions); 864 .appendTo($navActions);
838 } 865 }
839 } 866 }
  867 +
  868 +(function($) {
  869 + var sR = {
  870 + defaults: {
  871 + slideSpeed: 400,
  872 + easing: false,
  873 + callback: false
  874 + },
  875 + thisCallArgs: {
  876 + slideSpeed: 400,
  877 + easing: false,
  878 + callback: false
  879 + },
  880 + methods: {
  881 + up: function (arg1,arg2,arg3) {
  882 + if(typeof arg1 == 'object') {
  883 + for(p in arg1) {
  884 + sR.thisCallArgs.eval(p) = arg1[p];
  885 + }
  886 + }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
  887 + sR.thisCallArgs.slideSpeed = arg1;
  888 + }else{
  889 + sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
  890 + }
  891 +
  892 + if(typeof arg2 == 'string'){
  893 + sR.thisCallArgs.easing = arg2;
  894 + }else if(typeof arg2 == 'function'){
  895 + sR.thisCallArgs.callback = arg2;
  896 + }else if(typeof arg2 == 'undefined') {
  897 + sR.thisCallArgs.easing = sR.defaults.easing;
  898 + }
  899 + if(typeof arg3 == 'function') {
  900 + sR.thisCallArgs.callback = arg3;
  901 + }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
  902 + sR.thisCallArgs.callback = sR.defaults.callback;
  903 + }
  904 + var $cells = $(this).find('td');
  905 + $cells.wrapInner('<div class="slideRowUp" />');
  906 + var currentPadding = $cells.css('padding');
  907 + $cellContentWrappers = $(this).find('.slideRowUp');
  908 + $cellContentWrappers.slideUp(sR.thisCallArgs.slideSpeed,sR.thisCallArgs.easing).parent().animate({
  909 + paddingTop: '0px',
  910 + paddingBottom: '0px'},{
  911 + complete: function () {
  912 + $(this).children('.slideRowUp').replaceWith($(this).children('.slideRowUp').contents());
  913 + $(this).parent().css({'display':'none'});
  914 + $(this).css({'padding': currentPadding});
  915 + }});
  916 + var wait = setInterval(function () {
  917 + if($cellContentWrappers.is(':animated') === false) {
  918 + clearInterval(wait);
  919 + if(typeof sR.thisCallArgs.callback == 'function') {
  920 + sR.thisCallArgs.callback.call(this);
  921 + }
  922 + }
  923 + }, 100);
  924 + return $(this);
  925 + },
  926 + down: function (arg1,arg2,arg3) {
  927 + if(typeof arg1 == 'object') {
  928 + for(p in arg1) {
  929 + sR.thisCallArgs.eval(p) = arg1[p];
  930 + }
  931 + }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
  932 + sR.thisCallArgs.slideSpeed = arg1;
  933 + }else{
  934 + sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
  935 + }
  936 +
  937 + if(typeof arg2 == 'string'){
  938 + sR.thisCallArgs.easing = arg2;
  939 + }else if(typeof arg2 == 'function'){
  940 + sR.thisCallArgs.callback = arg2;
  941 + }else if(typeof arg2 == 'undefined') {
  942 + sR.thisCallArgs.easing = sR.defaults.easing;
  943 + }
  944 + if(typeof arg3 == 'function') {
  945 + sR.thisCallArgs.callback = arg3;
  946 + }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
  947 + sR.thisCallArgs.callback = sR.defaults.callback;
  948 + }
  949 + var $cells = $(this).find('td');
  950 + $cells.wrapInner('<div class="slideRowDown" style="display:none;" />');
  951 + $cellContentWrappers = $cells.find('.slideRowDown');
  952 + $(this).show();
  953 + $cellContentWrappers.slideDown(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing, function() { $(this).replaceWith( $(this).contents()); });
  954 +
  955 + var wait = setInterval(function () {
  956 + if($cellContentWrappers.is(':animated') === false) {
  957 + clearInterval(wait);
  958 + if(typeof sR.thisCallArgs.callback == 'function') {
  959 + sR.thisCallArgs.callback.call(this);
  960 + }
  961 + }
  962 + }, 100);
  963 + return $(this);
  964 + }
  965 + }
  966 + };
  967 +
  968 + $.fn.slideRow = function(method,arg1,arg2,arg3) {
  969 + if(typeof method != 'undefined') {
  970 + if(sR.methods[method]) {
  971 + return sR.methods[method].apply(this, Array.prototype.slice.call(arguments,1));
  972 + }
  973 + }
  974 + };
  975 +})(jQuery);
840 \ No newline at end of file 976 \ No newline at end of file
ieducar/modules/Avaliacao/Views/DiarioApiController.php
@@ -758,12 +758,13 @@ class DiarioApiController extends ApiCoreController @@ -758,12 +758,13 @@ class DiarioApiController extends ApiCoreController
758 758
759 //buscando pela área do conhecimento 759 //buscando pela área do conhecimento
760 $area = $this->getAreaConhecimento($componente['id']); 760 $area = $this->getAreaConhecimento($componente['id']);
  761 + $nomeArea = (($area->secao != '') ? $area->secao . ' - ' : '') . $area->nome;
761 $componente['area_id'] = $area->id; 762 $componente['area_id'] = $area->id;
762 - $componente['area_nome'] = $this->safeString(strtoupper($area->nome), false); 763 + $componente['area_nome'] = $this->safeString(strtoupper($nomeArea), false);
763 764
764 //criando chave para ordenamento temporário 765 //criando chave para ordenamento temporário
765 //área de conhecimento + componente curricular 766 //área de conhecimento + componente curricular
766 - $componente['my_order'] = Portabilis_String_Utils::unaccent(strtoupper($area->nome)) . Portabilis_String_Utils::unaccent(strtoupper($_componente->get('nome'))); 767 + $componente['my_order'] = Portabilis_String_Utils::unaccent(strtoupper($nomeArea)) . Portabilis_String_Utils::unaccent(strtoupper($_componente->get('nome')));
767 768
768 $componentesCurriculares[] = $componente; 769 $componentesCurriculares[] = $componente;
769 } 770 }
@@ -794,9 +795,10 @@ class DiarioApiController extends ApiCoreController @@ -794,9 +795,10 @@ class DiarioApiController extends ApiCoreController
794 795
795 $area = $mapper->findAll(array('area_conhecimento'), $where); 796 $area = $mapper->findAll(array('area_conhecimento'), $where);
796 797
797 - $areaConhecimento = new stdClass();  
798 - $areaConhecimento->id = $area[0]->area_conhecimento->id;  
799 - $areaConhecimento->nome = $area[0]->area_conhecimento->nome; 798 + $areaConhecimento = new stdClass();
  799 + $areaConhecimento->id = $area[0]->area_conhecimento->id;
  800 + $areaConhecimento->nome = $area[0]->area_conhecimento->nome;
  801 + $areaConhecimento->secao = $area[0]->area_conhecimento->secao;
800 802
801 return $areaConhecimento; 803 return $areaConhecimento;
802 } 804 }
ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
@@ -71,23 +71,23 @@ class ComponenteCurricularController extends ApiCoreController @@ -71,23 +71,23 @@ class ComponenteCurricularController extends ApiCoreController
71 } 71 }
72 72
73 else { 73 else {
74 - $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento 74 + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento
75 from pmieducar.turma, modules.componente_curricular_turma as cct, modules.componente_curricular as cc, modules.area_conhecimento as ac, 75 from pmieducar.turma, modules.componente_curricular_turma as cct, modules.componente_curricular as cc, modules.area_conhecimento as ac,
76 pmieducar.escola_ano_letivo as al where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and 76 pmieducar.escola_ano_letivo as al where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and
77 cct.escola_id = turma.ref_ref_cod_escola and cct.componente_curricular_id = cc.id and al.ano = $2 77 cct.escola_id = turma.ref_ref_cod_escola and cct.componente_curricular_id = cc.id and al.ano = $2
78 and cct.escola_id = al.ref_cod_escola and cc.area_conhecimento_id = ac.id 78 and cct.escola_id = al.ref_cod_escola and cc.area_conhecimento_id = ac.id
79 - order by ac.nome, cc.nome"; 79 + order by ac.secao, ac.nome, cc.nome";
80 80
81 $componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano)); 81 $componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano));
82 82
83 if (count($ComponentesCurriculares) < 1) { 83 if (count($ComponentesCurriculares) < 1) {
84 - $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento from 84 + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento from
85 pmieducar.turma as t, pmieducar.escola_serie_disciplina as esd, modules.componente_curricular 85 pmieducar.turma as t, pmieducar.escola_serie_disciplina as esd, modules.componente_curricular
86 as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al where t.cod_turma = $1 and esd.ref_ref_cod_escola = 86 as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al where t.cod_turma = $1 and esd.ref_ref_cod_escola =
87 t.ref_ref_cod_escola and esd.ref_ref_cod_serie = t.ref_ref_cod_serie and esd.ref_cod_disciplina = 87 t.ref_ref_cod_escola and esd.ref_ref_cod_serie = t.ref_ref_cod_serie and esd.ref_cod_disciplina =
88 cc.id and al.ano = $2 and esd.ref_ref_cod_escola = al.ref_cod_escola and t.ativo = 1 and 88 cc.id and al.ano = $2 and esd.ref_ref_cod_escola = al.ref_cod_escola and t.ativo = 1 and
89 esd.ativo = 1 and al.ativo = 1 and cc.area_conhecimento_id = ac.id 89 esd.ativo = 1 and al.ativo = 1 and cc.area_conhecimento_id = ac.id
90 - order by ac.nome, cc.nome"; 90 + order by ac.secao, ac.nome, cc.nome";
91 91
92 $componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano)); 92 $componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano));
93 } 93 }
@@ -95,9 +95,10 @@ class ComponenteCurricularController extends ApiCoreController @@ -95,9 +95,10 @@ class ComponenteCurricularController extends ApiCoreController
95 95
96 $options = array(); 96 $options = array();
97 foreach ($componentesCurriculares as $componenteCurricular) { 97 foreach ($componentesCurriculares as $componenteCurricular) {
  98 + $areaConhecimento = (($componenteCurricular['secao_area_conhecimento'] != '') ? $componenteCurricular['secao_area_conhecimento'] . ' - ' : '') . $componenteCurricular['area_conhecimento'];
98 $options['__' . $componenteCurricular['id']] = array( 99 $options['__' . $componenteCurricular['id']] = array(
99 'value' => $this->toUtf8($componenteCurricular['nome']), 100 'value' => $this->toUtf8($componenteCurricular['nome']),
100 - 'group' => $this->toUtf8($componenteCurricular['area_conhecimento']) 101 + 'group' => $this->toUtf8($areaConhecimento)
101 ); 102 );
102 } 103 }
103 104